问题标签 [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 回答
127 浏览

floating-point - IEEE浮点算术计算时间是否取决于值?

我在 CFD 求解器中使用 IEEE 严格的浮点运算。我的算法是明确且确定的(它将在每个时间步执行完全相同数量的计算)。然而我观察到,在解决方案......复杂的时期(在整个网格中发生了很多事情),求解器“陷入困境”并且速度变慢。

我对 FP 算术非常不友好,因此假设 FP 算术在其计算时间上是确定性的。现在我开始怀疑给定 FP 计算所需的实际 CPU 操作的数量是否取决于这些值(例如,乘法或除法的指数差异很大)。

IEEE 严格的浮点性能能否取决于值?

0 投票
1 回答
461 浏览

gcc - PGI 14.6 OpenSuse 13.1 x_64 gcc 4.8 c++11 编译错误

我正在尝试使用 OpenSuse 上的 PGI 14.6 编译具有 c++11 功能的 C++ 程序。不幸的是,我收到以下错误

我的配置如下:

任何帮助将不胜感激。

问候

0 投票
2 回答
2608 浏览

fortran - Fortran:将所有变量初始化为特定的默认值

我正在编写一个有 40 年历史的 Fortran 意大利面条代码,其中包含许多隐式声明的变量。因此,甚至没有一种简单的方法可以知道代码中存在哪些变量以初始化它们的值。现在,有没有办法告诉编译器(例如英特尔 Fortran)将代码中的所有变量初始化为特定的默认值(例如 -999),而不是英特尔编译器提供的零或非常大的数字?

0 投票
1 回答
399 浏览

c++ - 使用 OpenACC 设置设备内存中变量的值

为什么下面的代码不允许我var通过10函数设置intfun

汇编:

执行:

如何在设备上intfun设置参数值int var

0 投票
1 回答
477 浏览

c++ - 外部函数如何使用设备内存中的变量?

在这段代码中:

如何int value识别在设备内存中intfun?如果我在编译指示中替换present(variable[:1])为,我会收到以下运行时错误:present(variable[:1],value)intfun

我不明白为什么指定它valuepresent导致上述失败。我检查了value仅在指令中复制一次的NVVP enter data,即它不会parallelintfun. OpenACC 如何发挥它的魔力?

0 投票
1 回答
2726 浏览

c++ - OpenACC 减和输出在每次执行时递增总和

为什么下面的代码:

每次执行都返回不同的结果?

根据 OpenACC 标准:

在退出数据指令上,数据被复制回本地内存并被释放。

看起来它sum没有被释放,而是在程序的每次运行时重新使用(并增加)。此外,指令中的+运算符reduction将归约变量初始化为0,因此即使sum没有在执行之间释放,也不应该发生这种情况。

我可以通过在指令中使用copyin而不是createfor来避免这种行为,或者在单个 gang、单个工作内核中设置:sumenter datasum = 0

但这并不令人满意,因为它需要昂贵的主机到设备数据复制,或者内核启动。为什么我的程序会这样?

0 投票
1 回答
514 浏览

cuda - CUDA Fortran CURAND 设备 API 问题

上下文:我正在尝试使用 CURAND 在 GPU 上生成一些伪随机数,但由于我使用的是 CUDA fortran,因此我必须创建一个接口模块,该模块与用 C 编写的 CURAND LIBRARY 函数接口。这是接口代码:

call curand_init(seed,id,0,tmpconf)在同一个模块中,我在全局内核中调用了这个设备子例程。调用全局内核时出现此错误。

任何想法我如何解决这个问题。

0 投票
1 回答
1309 浏览

c++ - CUDA 和 C++ 中的名称修改

我的 C++ 项目main.cpp,使用pgcppPGI 编译,调用了一个函数,该函数cuda()在一个单独的文件中包含 CUDA 代码cuda.cu,使用nvcc. 除非我在函数声明和公共头文件中包装cuda()函数,否则我会收到链接错误(未定义的引用)。extern "C"

没有extern "C"(符号名称不匹配 => 未定义的引用):

使用extern "C"(符号名称匹配 => 链接工作正常):

我的印象是nvcc使用宿主 C++ 编译器来编译宿主代码,因此它会像在 C++ 中那样破坏符号名称?那我做错了什么?

编辑:这可能是由于nvcc实际使用 GNU 编译器来编译gcc主机代码,并且该编译器对名称的处理方式与 GNU 编译器不同pgcpp吗?

EDIT2:我的系统有 pgcpp 14.9、gcc 4.4.7、nvcc/CUDA 6.5

0 投票
2 回答
736 浏览

thrust - 编译器不支持 #pragma once

我有一个不支持的编译器 (PGI)

但是我想包含的库(推力)使用它们。

有解决此问题的方法吗?

0 投票
2 回答
3493 浏览

c - 使用 OpenACC 并行化嵌套循环

我对 openacc 非常陌生,并且只有高级知识,因此我将不胜感激任何对我做错的帮助和解释。

我正在尝试加速(并行化)一个不那么简单的嵌套循环,该循环使用 openacc 指令更新扁平(3D 到 1D)数组。我在下面发布了一个简化的示例代码,使用

pgcc -acc -Minfo=accel test.c

给出以下错误:

call to cuStreamSynchronize returned error 700: Illegal address during kernel execution

代码:

代替使用regionandloop指令,使用

产生以下错误:

我正在运行此代码