问题标签 [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.

0 投票
1 回答
135 浏览

c++ - OpenACC 嵌套循环依赖错误

拜托,我需要一些关于使用 OpenACC 并行计算模型(C++)的帮助。问题如下:

变量 W、hbias、vbias(它应该更新每次迭代)和 propup 和 propdown 函数内部的计算手段之间存在依赖关系,但是通过在不可用的代码上使用 OpenACC。所以每个迭代函数都会得到 W 的初始值和偏差。请注意,如果并行化发生在较低级别,则不会受益。这是代码:

0 投票
0 回答
422 浏览

multithreading - 2 个平台(GCC 和 PGI 编译器)上的 Fortran/OpenMP 比较。意外的执行时间

我编译(使用 GCC 和 PGI 编译器)并在两个不同的平台(基于 Haswell 和 Skylake)上运行了一个小型 Fortran/OpenMP 程序,只是为了感受一下性能的差异。我不知道如何解释结果——它们对我来说是个谜。

这是小程序(取自 Nvidia Developer 网站并稍作改编)。

我使用的两个平台是:

  • 英特尔 i7-4770 @ 3.40GHz (Haswell),32 GB RAM / Ubuntu 16.04.2 LTS
  • Intel i7-6700 @ 3.40GHz (Skylake), 32 GB RAM / Linux Mint 18.1 (~ Ubuntu 16.04)

在每个平台上,我都编译了 Fortran 程序

  • GCC gfortran 6.2.0
  • PGI pgfortran 16.10 社区版

我显然在每个平台上独立编译了程序(我只移动了 .f90 文件;我没有移动任何二进制文件)

我运行了 4 个可执行文件中的每一个 5 次(每个平台 2 个),收集以秒为单位测量的挂墙时间(由程序打印出来)。(嗯,整个测试我跑了好几次,下面的时间绝对有代表性)

  1. 顺序执行。程序编译:

    • gfortran -Ofast main.f90 -o gcc-seq
    • pgfortran -fast main.f90 -o pgi-seq

    时间安排(最好的 5 个):

    • 哈斯韦尔 > gcc-seq:150.955,pgi-seq:165.973
    • Skylake > gcc-seq:277.400,pgi-seq:121.794
  2. 多线程执行(8 个线程)。程序编译:

    • gfortran -Ofast -fopenmp main.f90 -o gcc-omp
    • pgfortran -fast -mp=allcores main.f90 -o pgi-omp

    时间安排(最好的 5 个):

    • 哈斯韦尔 > gcc-omp:153.819,pgi-omp:151.459
    • Skylake > gcc-omp:113.497,pgi-omp:107.863

使用 OpenMP 编译时,我使用 omp_get_num_threads() 检查了并行区域中的线程数,实际上总是有 8 个线程,正如预期的那样。

有几件事我没有得到:

  • 使用 GCC 编译器:为什么在 Skylake OpenMP 上具有显着优势(277 vs 113 s),而在 Haswell 上却完全没有优势?(150 vs 153 s) Haswell 发生了什么?
  • 使用 PGI 编译器:为什么 OpenMP 在两个平台上都有这么小的好处(如果有的话)?
  • 专注于顺序运行,为什么 Haswell 和 Skylake 之间的执行时间存在如此巨大的差异(尤其是当程序使用 GCC 编译时)?为什么这种差异仍然如此重要 - 但是 Haswell 和 Skylake 的角色颠倒了!- 何时启用 OpenMP?
  • 此外,当启用 OpenMP 并使用 GCC 时,cpu 时间总是比 wall 时间大得多(正如我所料),但是当使用 PGI 时,cpu 和 wall 时间总是相同的,那么程序也使用了多个线程。

我怎样才能从这些结果中获得一些意义?

0 投票
4 回答
412 浏览

compiler-construction - PGI Flang github消失了

有谁知道 Flang 或 PGI/LLNL/Nvidia 的 Fortran for LLVM(不是 Dragonegg)去了哪里?我在一个不再存在的 github 页面上找到了一些文档。

0 投票
1 回答
154 浏览

parallel-processing - 使用 CUDA Fortran 的设备无法正确返回主机发送的值

我以 CUDA Fortran 的主机和设备之间的数据传输为例,发现:

主机代码:

设备代码:

预期的结果是控制台显示“成功”,但这并没有发生。屏幕上什么也没有出现,没有任何错误或消息。发生这种情况是因为不要输入 if,因为 a_d 与调用 inc 子程序之前的值相同。

我正在使用:

操作系统:Linux - Ubuntu 16

库达 8

PGI 编译

编译命令:

我尝试了其他示例,但它们也不起作用。

我尝试使用具有相同命令的简单 Fortran (.f90) 代码进行编译,它可以工作!

我该如何解决这个问题?

0 投票
0 回答
198 浏览

c++ - PGI 编译器:macOSX 上的编译时错误

我的macOS是10.12.4,我已经在我的macbook上安装了PGI(只需通过从PGI官网下载的安装程序安装,激活自己的控制台,没有其他操作,在这个控制台中,有类似“pgcc pgc++和等等”),版本是 16.10,我用 CLion 编辑了一个测试代码:

当我编译它时,我遇到了一些问题:

并且无论使用 pgc++ 执行哪个部分(第 1 部分或第 2 部分),错误信息可能是相同的,我不知道从哪里开始解决这个问题,我是 macbook 上的新手,真的希望你帮助~

0 投票
1 回答
93 浏览

openacc - 如何找到用于 OpenACC 的特定 PGI 函数的签名?

如何找到 PGI 编译器用于 OpenACC 的特定函数的签名?

例如,__pgi_uacc_enter__pgi_uacc_launch函数。

是否有任何文档或头文件可以找到签名。甚至一些文档不仅涉及其签名,还涉及其功能。

0 投票
2 回答
1728 浏览

c - OpenACC必有例行信息错误

我正在尝试并行化一个简单的 mandelbrot c 程序,但我得到了这个错误,它与不包括 acc 例程信息有关。另外,我不确定是否应该将数据复制进和复制出并行部分。PS我对并行编程比较陌生,所以任何关于学习它的建议都将不胜感激。

(编译时警告)

这是我的代码:

0 投票
2 回答
1513 浏览

c++ - 使用 AMD GPU 编译 OpenACC

我无法用 AMD Radeon R7 M360 编译它。我已经用多核编译了它,如下所示,但是谁能告诉我如何用 GPU 编译它,我试过 -ta=amd64/radeon 但它都不起作用。您可以在此图像中看到代码。我用它编译了

pgc++ -V -Minfo=accel -acc -ta=多核 sum.cpp -o /home/fawad/Desktop/sum

在此处输入图像描述

主要的:

我需要有人指导我如何使用 AMD 进行编译。我正在使用 PGI 编译器。

0 投票
1 回答
266 浏览

random - 使用 PGI Fortran 生成许多随机数时出现分段错误

我需要生成大量随机数(从零到1,均匀分布)。

我最初有一个 Do 循环,并且正在动态生成随机数,如下所示:

但是,我在生成数字时遇到了分段错误(如果我注释掉了“call random_number(RandomN)”行,它工作正常)。

然后在阅读 PGI 论坛 ( http://www.pgroup.com/userforum/viewtopic.php?t=713&highlight=randomseed ) 上的帖子后。我决定首先生成所有数字并将它们放入一个数组中。

但是,这立即给了我一个段错误。我尝试了没有种子的简化版本:

适用于我的代码的几次迭代,然后也会产生分段错误。我是否正在使用某种内存?有没有办法清除它?或防止它被用完?

我也试过:

但这也给出了段错误。

0 投票
1 回答
73 浏览

c - MPI_Irecv 类型转换需要错误

我的代码可以在我的 github 上找到: https ://github.com/chrismunley/ParallelProgramming/tree/master

我得到的错误是: PGC-W-0095-Type cast required for this conversion (my_laplace.c: 112) PGC-W-0095-Type cast required for this conversion (my_laplace.c: 120) PGC/x86-64 Linux 17.5-0:编译完成但出现警告

有人知道我在 Irecv 上做错了什么吗?我认为这与参数有关。非常感谢!