问题标签 [pgi-accelerator]
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.
fortran - Fortran-OpenACC 例程如何调用另一个 Fortran-OpenACC 例程?
我目前正在尝试通过使用带有 PGI (15.10) 编译器的 OpenACC 将大部分例程移植到 GPGPU 来加速光谱元素流体求解器。源代码是用 OO-Fortran 编写的。该软件具有调用其他功能和子程序的子程序“层”。为了使用 openacc 将代码带到 GPU 上,我首先尝试在每个需要移植的例程中放置“$accroutine”指令。在编译期间,使用“pgf90 -acc -Minfo=accel”,我收到以下错误:
nvvmCompileProgram 错误:9。
错误:/tmp/pgacc2lMnIf9lMqx8.gpu (146, 24): 使用错误类型解析对函数“innerroutine_”的无效前向引用!
PGF90-S-0155-Compiler 无法转换加速器区域(请参阅 -Minfo 消息):设备编译器以错误状态代码退出 (Test.f90: 1)
可以使用以下简单的 fortran 程序重现同样的问题:
同样,使用“pgf90 -acc -Minfo=accel”编译上述程序会产生问题。
openacc 是否支持启用 acc 的例程调用其他启用 acc 的例程?
如果是这样,我做错了什么?
openacc - PGI 16.9 中的行太长。怎么解决?
使用以下虚拟代码来复制问题。
PGF90-S-0285-源代码行太长 (pp.f90: 6) PGF90-S-0023-语法错误 - 括号不平衡 (pp.f90: 6) 0 通知,0 警告,2 严重,0 对 pp 致命
nvcc - openacc - ta=multicore 和 ta=nvidia 编译之间的差异
我有一个最初用 OpenMP 编写的代码。现在,我想将它迁移到 OpenACC 中。考虑以下:
1- 首先,OpenMP 的输出结果被认为是最终结果,OpenACC 输出应该跟随它们。
2-其次,代码中有两个功能可以通过输入终端上的程序来启用。因此,要么 要么F1
运行F2
基于输入标志。
因此,如前所述,我将代码转移到 OpenACC。现在,我可以使用两者来编译我的 OpenACC 代码,-ta=multicore
并-ta=nvidia
为不同的架构编译 OpenACC 区域。
对于F1
,两种架构的输出都与 OpenMP 相同。因此,这意味着当我使用 and 编译我的程序时-ta=multicore
,-ta=nvidia
我会在选择时得到类似于 OpenMP 的正确输出结果F1
。
对于F2
,有点不同。编译-ta=multicore
给我一个正确的输出作为 OpenMP,但同样的事情不会发生在 nvidia 架构上。当我用结果编译我的代码时-ta=nvidia
是错误的。
任何想法可能有什么问题,F2
甚至是build process
什么?
注意:我使用的是 PGI 编译器 16,而我的 NVIDIA GPU 的 CC 等于 5.2。
cuda - OpenACC 中的固定内存(使用 PGI 编译器)
我有一个简单的 CUDA 代码,我将它翻译成 OpenACC。我的所有内核都按预期并行化,它们的性能与我的 CUDA 内核相似。但是,设备到主机的内存传输会影响我的性能。在我的 CUDA 代码中,我使用固定内存并且性能要好得多。不幸的是,在 OpenACC 中我不知道如何使用固定内存。我在文档中找不到任何内容。有人可以为我提供一个使用固定内存的简单 OpenACC 示例吗?
PS:我使用的是 PGI 16.10-0 64 位编译器
openacc - 如何找到用于 OpenACC 的特定 PGI 函数的签名?
如何找到 PGI 编译器用于 OpenACC 的特定函数的签名?
例如,__pgi_uacc_enter
或__pgi_uacc_launch
函数。
是否有任何文档或头文件可以找到签名。甚至一些文档不仅涉及其签名,还涉及其功能。
nvidia - OpenACC 有哪些可能的目标?
我愿意在一些项目上使用 OpenACC。我不确定可能的架构。
官方称,使用 PGI 编译器,加速器可以是多核 CPU 或 Nvidia Tesla GPU。 还有其他可能的目标吗?(最终使用其他编译器)
我在某处表示 pgcc 曾经与 Radeon GPU 兼容。我看到一个使用 Nvidia Quadro 的项目。Nvidia Geforce 也兼容吗?
openacc - 编译器错误 PGI OpenACC "pgf90_mzero8" 未定义
我正在尝试将 fortran 中的子例程编译为 !$acc 例程 seq 我收到以下错误消息
/scratch/tmp/pgaccKU0jSWcDesiI.gpu(93):错误:标识符“pgf90_mzero8”未定义
在“/scratch/tmp/pgnvdgV0jsxZLyFWv.nv0”的编译中检测到 1 个错误
PGI 编译器版本 17.4
文本大小写
子例程 xx(ndime,pgaus,yy) !$acc 例程 seq
隐式无整数(4) :: ndime, pgaus real(8) :: yy(ndime,ndime,pgaus)
年=0.0
结束子程序 xx
openacc - 编译 openacc 例程“pgf90_copy_f77_argl_i8”时出错
不支持调用 PGI 运行时函数 - pgf90_copy_f77_argl_i8
我相信正在将一个 8 字节整数参数传递给 !$acc 例程。
任何解决方法或更新?
PGI 编译器 17.4
例子。
这里 func 是 acc 例程,所以我想这种方法会产生问题。
我们将创建临时数组,然后传递它们。
c - 如何使用 C/OpenACC 和 PGI 编译器声明全局动态数组
我正在尝试运行一个简单的测试用例,其中动态分配的数组A
被定义为外部并使用 OpenACC 上传到 GPU。全部使用 PGI 编译器。
我的 header.h
文件:
然后,我的header.c
实现:
然后,在main.c
我有
我使用以下命令编译代码:
我的PGI
编译器版本是:
要执行代码:
我认为问题在于 PGI 编译器发送variable=A bytes=8
,因此忽略了我的发送请求A[0:N]
。
那么,如何用 C/OpenACC 和 PGI 编译器声明一个全局动态数组呢?