问题标签 [openacc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3493 浏览

c - 使用 OpenACC 并行化嵌套循环

我对 openacc 非常陌生,并且只有高级知识,因此我将不胜感激任何对我做错的帮助和解释。

我正在尝试加速(并行化)一个不那么简单的嵌套循环,该循环使用 openacc 指令更新扁平(3D 到 1D)数组。我在下面发布了一个简化的示例代码,使用

pgcc -acc -Minfo=accel test.c

给出以下错误:

call to cuStreamSynchronize returned error 700: Illegal address during kernel execution

代码:

代替使用regionandloop指令,使用

产生以下错误:

我正在运行此代码

0 投票
2 回答
211 浏览

memory - 在 OpenACC 中高效使用内存

我正在开发一个 OpenACC 计算流体动力学代码,通过将整体计算分解为一堆小操作来增加循环内计算的粒度。我的最终目标是通过将原始复杂任务拆分为 GPU 上更简单的一系列任务来减少每个威胁的寄存器数量。

例如,对于计算域的特定节点,我有许多公式要计算:

如您所见,我可以将计算分散到一个块的线程中,最后将结果(通过归约)汇总到 R。因此,我定义了一个内部并行循环,如下所示:

但是,我需要将 D 定义为所有线程的共享内存,但实际上我不知道 OpenACC 的最佳方式是什么?(我使用了 !$acc 缓存,但性能更差)。此外,我需要将一些未更改的数据发送到常量内存,但我不知道该怎么做。

有没有什么有效的方法可以将这个想法实施到 OpenACC 中?我真的很感谢你的帮助。

非常感谢,贝扎德

0 投票
2 回答
267 浏览

cuda - 我可以在 C 源代码级别分析 OpenACC 内核吗?

我正在尝试使用带有 PGI 15.7 编译器的 openacc 来加速我的代码。

我想在 C 源代码级别分析我的代码。我正在使用 CUDA 7.0 中的“nvvp”分析器当我运行 nvvp 时,我可以使用“分析抽头”,并且可以了解哪个延迟是我的代码变慢的原因。(数据依赖,条件分支和带宽......等)

但是,我无法获得基于行的分析,而只能获得“内核”级别的分析。(例如 main_300_gpu 内核使用了 10 秒)。所以我很难知道我必须在哪里修复代码。

有没有办法在源代码级别分析我的代码

我在用着

PGI 15.7(使用 pgcc)

CUDA 7.0

英伟达 GTX 960

Ubuntu 14.04 LTS x86_64

[我的nvvp报告截图] 在此处输入图像描述

在此处输入图像描述

0 投票
1 回答
1920 浏览

cuda - NVIDIA GPU 支持分支预测?(使用 OpenACC)

我正在使用带有 OpenACC 的 NVIDIA GPU(NVIDIA GeForce960,编译器:PGI 15.7)

NVIDIA GPU 是否支持分支预测?我的代码在长循环中有条件执行代码。但是当我在 GPU 上运行我的代码时,它需要很长时间。

下面是示例代码。

如果这段代码在 CPU 上编译并运行,CPU 将对条件执行循环进行分支预测。NVIDIA GPU 是否具有与 CPU 的分支预测相同或相似的技能?

如果有,我该如何启用它?

附加问题:

PGI 15.7 编译器是否可以为 GPU 编译优化代码?我知道通常的编译器(gcc ...等)可以使用优化技能进行编译,例如更改条件代码执行顺序。

0 投票
1 回答
236 浏览

windows - Windows 环境 OpenACC

我想开始开发 OpenACC 程序,我有几个问题要问:是否可以在 AMD gpu 上执行 OpenACC 代码?

如果是这样,我正在寻找可用于 Windows 环境的编译器。我花了大约一个小时什么都没找到,我急切地想找到任何可以让我编译 Openacc 指令的东西。

0 投票
1 回答
427 浏览

c - 删除 C 中的数据依赖项

我有一个具有数据依赖性的代码。

代码示例:

我想删除数据依赖性以并行化此代码。我知道我必须编辑我的代码,但不知道如何修复它。

我该如何修复此代码?

0 投票
2 回答
1463 浏览

cuda - PGI openACC:目标特定的 gpu 设备

我有两张 NVIDIA 卡:

使用 pgcc,我如何定位特定的卡?如何确保为 nvidia0 (device=0) 或 nvidia1 (device=1) 生成代码?

预先感谢您的帮助。

0 投票
2 回答
920 浏览

c - 编写混合 MPI/OpenACC 程序

我正在尝试编写混合 MPI/OpenACC 代码,其中代码需要执行 8 个不同的工作(在本例中为 8 个不同的扫描)。这 8 个作业使用 MPI 划分为 [1-8] 个进程/节点,并且需要在 8 个作业中完成的计算使用 OpenACC 并行化。

在每个过程完成计算后,我减少解决方案并将最小值传递给作为最终解决方案的过程 0。

下面是生成 .txt 输出文件的完整代码 (test.c) 的 MCVE

当我丢弃 openacc 指令并使用 [1-8] 进程运行它时,该代码有效,但是当使用 open acc 编译器时,我得到一个 cudaError。

call to cuStreamSynchronize returned error 700: Illegal address during kernel execution

MPI编译:

OpenACC 编译:

要运行可执行文件,您需要传入一个输入 vti 文件和输出文件名。

链接到输入文件input.vti

我希望这段代码非常灵活,我想让它可以在具有 1 个 GPU 的单个节点上运行,同时运行 [1-8] 进程,也可以在 [1-8] 节点上运行,每个节点都有 [1- 2] GPU。而且我没有使用 CUDA MPS。

我的规格

对此的任何帮助或建议将不胜感激。

编辑:

0 投票
1 回答
344 浏览

memory - 如何通过 OpenACC 复制用户定义的类型

我正在使用 PGI 15.7 编译器。我想知道如何通过 OpenACC 将定义的结构从 CPU 复制到 GPU。

非常感谢。

0 投票
1 回答
554 浏览

cuda - PGI 编译器能否将生成的 Cuda 代码输出到文件中

我希望将生成的 CUDA 代码保存在文件中以供检查。OpenAcc 和 PGI 编译器可以做到这一点吗?