问题标签 [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.
cuda - PGI 加速器 Fortran 代码中的错误
这是我的代码
我正在使用 PGI 加速器指令进行并行化,但它显示
“编译器无法转换加速器区域(请参阅 -Minfo 消息):具有零步长值的感应变量”
cuda - Visual C++ 中的 OpenACC
我想用 OpenACC 指令并行化我的代码。据说它是一个跨平台的API。开发公司没有提供有关 VisualStudio 中 OpenACC 的信息。有没有办法做到这一点?
cuda - 如何使用 OpenACC 优化矩阵乘法?
我正在学习 OpenACC(使用 PGI 的编译器)并尝试优化矩阵乘法示例。到目前为止,我提出的最快的实现如下:
这会产生大小为 32x32 线程的线程块,并为我提供迄今为止最好的性能。以下是基准:
不幸的是,我意识到生成的 CUDA 代码非常原始(例如,它甚至不使用共享内存),因此无法与手动优化的 CUDA 程序竞争。作为参考实现,我采用了 Arrayfire 库,结果如下:
我想知道是否有任何建议如何从 OpenACC 获得更好的性能?也许我选择的指令不正确?
cuda - 多维数组拷贝OpenACC
我有一个 2D 矩阵 SIZE x SIZE,我正在尝试将其复制到 GPU。
我这样分配矩阵:
我的 ACC 地区有这个:
当使用 PGI 编译器进行编译时,使用 -Minfo=acc,编译器会告诉我:
a[0:1024][0:] 是什么意思?为什么不是 [0:1024][0:1024] ???
如果我不声明矩阵,而是声明大小为 SIZE*SIZE 的数组,则执行
生成以下编译器消息
代码实际上以相同的方式工作,相同的性能,相同的结果。
显然,编译器以两种方式生成相同的代码,应该是这样,但消息并不简单。
我在 Linux64 机器上使用 PGI 加速器 12.8。我正在使用 -Minfo=acc 进行编译
注意:这个问题已经过编辑,现在它并没有多大意义,但它可能对更多人有用。
cuda - OpenACC:复杂循环对“*(*(b))”的依赖阻止了并行化
我正在使用具有动态数组分配的 OpenACC。以下是我的分配方式:
这是我如何并行矩阵添加:
当我用它编译这段代码时,pgcc
它会检测循环迭代上对指针的依赖float**
并生成所有标量内核(每块 1 个块 1 个线程),其性能不如预期:
循环显然是并行的,我认为编译器也可以检测到这一点。我很好奇如何解释它pgcc
?
提前致谢。
cuda - 使用 OpenACC 共享内存
我正在尝试使用共享内存来缓存 OpenACC 的内容。
基本上我正在研究的是矩阵乘法,我所拥有的是:
我想做的是使用共享内存来缓存矩阵“a”和“b”的图块,以用于计算“c”,其方式与 CUDA mmul 算法类似。
基本上在 CUDA 上,我会知道我的块的确切大小,并且能够:
- 用块的大小声明一个共享内存
- 将数据的“相关”部分复制到块中
- 使用这些数据
我知道我可以使用
指令,并且我可以使用vector和gang选项指定块大小,但是我在理解如何将其映射到 CUDA 架构时遇到了一些麻烦。
有没有办法用 OpenACC 实现类似的功能?是否有关于使用缓存指令或如何将共享内存的一些功能从 CUDA 映射到 OpenACC 的良好教程/资源?
c++ - C/C++ 和 GNU/PGI:对 `__pgio_ini' 的未定义引用
有没有办法将 PGI 编译器二进制文件链接到现有的 GNU 二进制文件?当我尝试链接时,出现以下错误:
细节:
我用 gcc 和 g++ 编译了一些文件。Cmain
函数包含在这些文件中。现在我应该在项目中添加一个 OpenACC 函数,该函数必须由 PGI C Compiler ( pgcc
) 编译。编译后,出现上述链接错误(两者pgCC
或g++
链接器的错误相同)。
也许我需要将 OpenACC 函数集成到一个虚拟库中并将其包含/链接到项目中。但我不知道该怎么做。
不幸的是,无法使用 PGI 编译器编译整个项目,因为某些功能依赖于 GNU 编译器。
提前致谢。
cuda - NVCC 5.0 和 OpenACC
根据英伟达网站:
“CUDA 工具包补充并完全支持使用 OpenACC 指令进行编程。”
这是否意味着可以使用编译nvcc
器编译 OpenACC 程序(pargma 和 API)?或者这意味着只支持运行时例程调用?
不幸的是,这些天我无法安装 CUDA Toolkit 5.0 来获得答案。谢谢!
cuda - 内核构造和并行构造之间的区别
我研究了很多文章和 OpenACC 的手册,但我仍然不明白这两种结构的主要区别。