问题标签 [pgi]
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.
c++ - 在并行部分循环中使用 `__pgi_gangidx()`
编译器__pgi_gangidx()
扩展函数应该返回执行函数的帮派的数字 id(参见此处)。但是,我一直无法弄清楚如何在并行部分循环中使用它。
在下面的代码中,我尝试了几种可能性,其中只有一种产生了所需的答案。不幸的是,这一个按顺序运行我的并行部分循环。
该变量int place
是对多个全局数组的更复杂的特定于帮派的引用的替代,因此不容易删除。
代码可以编译为:
代码:
gpu - nvprof 和 pgprof 有什么区别吗?
我很想知道是否pgprof
== nvprof
+ nvvp
。例如,我想知道它们是否可以互换。nvprof
还是nvvp
会完全按照以下方式描述 PGI OpenACC 应用程序pgprof
?例如,pgprof
预选 OpenACC 安装附带的 CUDA 工具包,然后nvvp
选择/usr/local/cuda
. 混合工具包有什么问题吗?
我有点困惑,因为这两种工具的文档(NVIDIA Profiler 文档和PGI Profiler Guide)看起来完全一样。
也做一个差异并没有显示出任何明显的区别:
c++ - PGI 不支持 OpenMP 4.5 运行时函数
当我尝试编译以下代码时
和
我得到错误
其余的 OpenMP 运行时函数也未定义。代码用 gcc7 编译得很好。PGI 17.10 社区版编译器是否支持这些功能?根据他们的网站,PGI 17.10 社区版编译器支持 OpenMP 4.5。我究竟做错了什么?
我在 Ubuntu 16.04 和 17.04 上试过这个。
c++ - 使用 OpenACC 时输出为零
我使用 PGI 社区版 17.10 来编译和运行休闲代码。为什么我添加 OpenACC 的指令时输出错误?你能帮我解释一下为什么会这样吗?在此先感谢,萨贾德
c++ - 使用 OpenACC 时输出错误
我将通过 openacc 优化这段代码,但输出计算为零。我很高兴有机会以这种方式帮助我,并使用您的指导来取得成功并解决我的问题。
不耐烦,我期待着很快听到你的消息。国王问候,
萨贾德·穆罕默德
openacc - 当我使用 OpenACC(数据子句)时输出错误
我想通过 OpenACC 优化此代码,但输出计算量为零。我很感激有机会以这种方式帮助我,并使用您的指导来取得成功并解决我的问题。
国王问候,穆罕默德
nvidia - 数据子句(当我使用 OpenACC 时输出为零)
我想通过使用 OpenACC 来减少代码的运行时间,但不幸的是,当我使用 OpenACC 时,输出变为零。
萨贾德。**
c - 使用 pgcc 编译 FFTW,未定义的引用
对于其他软件,我需要--enable-mpi --enable-type-prefix --enable-float
安装 fftw-2.1.5。它应该编译为pgcc
PGCC等都安装在该/home
目录下。对于这篇文章,我将其缩短为path-to
.
我愿意:
./configure
成功完成,在make
我收到此错误消息期间:
我试图用-fPIC
标志重新编译:
然后我得到:
我现在试图找到一个解决方案来解决为什么会发生几个小时,但我无法弄清楚。
当我将其配置为使用 gcc 编译器(系统默认)时,一切正常:
编辑,更多信息:
我需要 fftw 的程序需要 pgcc。我认为最好按照某些论坛网站上的建议用它编译所有内容。
在 twiddle.c 中没有提到
__fd_sincos_1
. 例如第 92 行很简单for (i = 0; i < n; ++i) {
当我放下时,
--enable-type-prefix
什么都没有改变。还是同样的错误。
c++ - 使用 PGI 编译器编译 Eigen 时出错
我正在尝试使用 PGI 的 C++ 编译器编译包含 Eigen 标头的代码,但出现以下错误:
只要包含 Eigen 标头,无论正在编译的代码如何,我都会得到相同的错误。更具体地说,我包括以下内容:
并尝试编译一个简单的“Hello World”程序。除了 Eigen 的指令之外,CMakeLists.txt 也是准系统。
我应该注意,我使用的是 macOS Sierra (10.12.6),并且我已经尝试了 PGI 的 v17.10 和 v18.4。没有特殊标志用于编译。安装的 Eigen 包是 MacPorts (eigen3 3.3.4) 上最新的一个。
我之前已经对 Eigen 进行了非平凡的使用,并且在 GCC 上一切正常。我之前也毫无问题地使用过 PGI 的编译器。我试图同时使用两者的原因是我需要在使用 Eigen 的代码的某些部分中使用 OpenACC 编译指示。
任何引导我走向正确方向的帮助将不胜感激。
更新 1
在Eigen的源文件中转换addr
到错误的上述行(或评论所述行),const void*
而不是const char*
在 Eigen 的源文件中,我不再收到编译错误。我可以从 Eigen 获得基本功能,但更复杂的代码无法成功链接。产生以下错误:
更新 2
按照@chtz 对评论的建议使用-DEIGEN_DONT_VECTORIZE
,这会禁用 Eigen 的内置矢量化,项目代码编译、链接并成功执行。然而,这产生了一个主要问题,因为 Eigen 最初被用于其矢量化线性代数实现。
_mm_castpd_si128
至于编译错误,根据@ggael ,可能与PGI对类型的支持有关。
总而言之,似乎 Eigen 与 PGI 的 C++ 编译器的兼容性充其量只是部分的。
c++ - OpenACC CPU 与 GPU 优化
我是 OpenACC 的菜鸟,我尝试优化代码,对于 CPU,我得到:
对于我的 6 核 Intel I7(我关闭了超线程),我的并行化很差,6 核与 1 核之间的差异只有 30%(这意味着 70% 的代码按顺序运行,但我看不出在哪里)
对于 GPU:
并且GPU(gtx1070)比 6 核处理器慢 3 倍!
k = 20000,N = 200万
更新:
更改 GPU 代码:
现在 GPU 比 CPU 慢 2 倍
输出:
为什么我的 TimeGPU 比使用 PGI_ACC_TIME=1 的输出大 2 倍?(30 毫秒对 14 毫秒)