问题标签 [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 投票
1 回答
936 浏览

c++ - 未生成 OpenACC 并行内核

我正在 PGC++ 上开发代码以图形化地加速代码。

  • 我正在使用具有 Eigen 依赖性的 OpenBabel。
  • 我试过使用#pragma acc kernel
  • 我尝试过使用#pragma acc 例程
  • 我的编译命令是:“pgc++ -acc -ta=tesla -Minfo=all -I/home/pranav/new_installed/include/openbabel-2.0/ -I/home/pranav/new_installed/include/eigen3/ -L/home/ pranav/new_installed/lib/openbabel/main.cpp /home/pranav/new_installed/lib/libopenbabel.so"

我收到以下错误

注意:第 66 行是“mol.SetTorsion(a[0],a[1],a[2],a[3],i*(3.14159265358979323846/180));” 在下面粘贴的预兆中。

我显示此错误的代码如下:

从谷歌的主要搜索中,我知道这是由于 mol(OBMol 对象)的“反向依赖”而发生的错误。如果有人知道它的解决方案,请帮助我。

0 投票
1 回答
258 浏览

bash - Bash 脚本没有正确安装 python 包

我一直在按照本教程在我的 jetson tk1 上本地安装 openacc,但我发现安装脚本不正确。我在编译 openacc 库时没有看到任何错误,但是当我尝试编译时,我收到一条错误消息

http://scelementary.com/2015/04/30/openacc-on-jetson-tk1.html

0 投票
0 回答
191 浏览

c - 编译openACC代码得到奇怪的错误

每当我尝试使用 accull 编译器(用于编译 openACC)编译以下代码时,都会收到一条非常奇怪的错误消息。安装随附的基本开箱即用代码已编译并运行得很好,但是每当我尝试从 nvidia 运行代码时

https://github.com/parallel-forall/cudacasts/tree/master/ep3-first-openacc-program

我收到以下错误。这可能与编译器的差异有关?Nvidia 推荐 PGI,但我目前使用 acull,因为它是免费的。

0 投票
1 回答
151 浏览

opencv - 使用 opencv 时用于 accull 的编译器命令

我正在尝试加速我使用 OpenACC 编写的 opencv 程序,我正在使用 accull 编译器来执行此操作。但是,我很难找到任何可以帮助我解决这个问题的文档或示例。

http://scelementary.com/2015/04/30/openacc-on-jetson-tk1.html

0 投票
1 回答
688 浏览

fortran90 - 如何使子程序在 OpenACC 数据区域中工作

我正在使用 OpenACC 检测一个相当大的代码。现在,我正在处理一个调用其他一些例程 bar、far 和 boo 的例程 foo,如下所示:

几点:1) x、y 和 z 在循环中保持不变。2) 你可能不喜欢这里的代码结构,但这超出了我的工作描述。我应该使用 OpenACC 进行测试,期间。

我目前正专注于对“酒吧”的呼吁。我想让 bar 成为向量例程。我还没有准备好为 far 和 boo 做同样的事情。所以我想在一个平行区域内调用 bar,但我还没有准备好对 far 和 boo 做同样的事情。(我说这是一项正在进行的工作,对吗?)现在,我可以——我想!-- 在它自己的并行区域中的夹层条,并在每次循环迭代中将数据复制到它和从中复制数据

但这是很多数据传输。如果我可以只将 x、y 和 z 传输到设备一次,那就太好了。每个例程都有自己的数据区域,所以据我了解(如果我错了,请纠正我!)我无法将整个循环包含在单个数据区域中。这是我尝试过的另一种选择

但这不起作用,因为 中的数据copyin不会保留在设备上。data present当子句出现时它就消失了。(我也试过data createdata copyin。)

那么有没有办法做我在这里想做的事情?谢谢。

0 投票
1 回答
755 浏览

c - 在 C 中手动深度复制到设备

我正在尝试并行化一个使用 openACC 进行一些图像处理的程序。作为此处理的一部分,我定义了一个自定义结构,类似于:

我在一个数组中访问它Deep *structPointer

我遇到了一些手动将整个内容复制structPointer到 GPU 的文档,这给我留下了以下代码。

这一切都运行良好,直到我尝试运行一个并行 for 循环,该structPointer循环property根据RGB *image.

伪代码:

我得到:

调用 cuStreamSynchronize 返回错误 700:内核执行期间地址非法

的输出cuda-memcheck是:

请注意,程序在没有 openACC 的情况下编译时运行,并且在单线程中运行时将正确处理。

0 投票
1 回答
116 浏览

loops - 是什么在 OpenACC 代码中创建了 NaN?

我需要使用 OpenACC 检测 Fortran 代码。以下是相关部分:

当我检查“in dat”行和“in par”行的输出时,这些数字看起来很合理。当我检查“xin vals”行时,我看到了几个 NaN。不是所有的 NaN,而是几个。xin的任务就是这么简单!可能出了什么问题?(如果你没有猜到,我对 OpenACC 还是很陌生。谢谢。)

编辑:这是用 PGI Fortran 编译的。

0 投票
0 回答
101 浏览

fortran - 与 OpenACC 混淆

在我试图理解 OpenACC 的过程中,我遇到了一个具有以下结构的代码:

几个问题:

首先,vectorroutine1包含vector循环,但在循环中被调用seq。在我看来,这将一个vector循环放在一个seq循环中,我认为这是不正确的。我一定是错的,因为代码运行。但我怎么错了?

其次,所有的调用都是在一个parallel区域内完成的。但是routine1有两个独立的循环,我认为在一个parallel区域内,线程不会在循环结束时停止,而只是不断地进入下一个循环,这会导致各种问题。再次,代码运行并产生合理的结果,所以我一定是错的,但我错了?

第三,关于declare createin routine1,我认为该语句适用于在整个执行过程中存在的全局变量,而不是局部变量。data我认为处理局部变量的方法是使用 required copyin, copyout, what have you, 子句设置一个区域。

这似乎是一个很好的代码。它的运行结果合理,并且是由当然应该知道自己在做什么的人编写的。但它违反了我所读到的关于 OpenACC 的很多内容。我需要找到更好的材料来阅读吗?

0 投票
1 回答
482 浏览

fortran - OpenACC 库互操作性:如何获取设备指针?

我们有一个用 Fortran 编写的项目。

现在我知道这可以使用 PGI 编译器完成,但我不想被许可证卡住。

我想看看我们是否可以在我们的项目中使用 OpenACC。我使用此处的说明安装了 gcc5.2。

https://github.com/olcf/OLCFHack15

现在我想做一些类似于这里所说的事情。

https://gcc.gnu.org/onlinedocs/libgomp/OpenACC-Library-Interoperability.html

更具体地说,第 8.3 节中所述的内容。我正在尝试使用 gfortran 精确复制它。不幸的是,我不知道如何在 fortran 中做到这一点。在示例中,

这允许 d_X 直接用于

但在 fortran 中,acc_copyin不返回任何内容。

那么我将如何在 Fortran 中复制该案例?

0 投票
1 回答
49 浏览

openacc - OpenACC 编译器是否必须进行依赖性分析?

许多 OpenACC 教程假定编译器/加速器将通过自动检查依赖关系并确保循环实际上是可并行化的来检查正确性。然而,OpenACC 规范似乎没有提及强制正确性分析的任何内容。OpenACC 编译器是否有义务检查循环是否实际上是可并行化的,如果不是则放弃?