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

0 投票
1 回答
314 浏览

debugging - 我可以用 cuda-gdb 调试 openACC 吗?还是其他调试工具?

我在CUDA上使用CAPS OpenACC。我正在尝试使用cuda-gdb进行调试。我可以使用cuda-gdb正常调试 c/c++ 代码。换句话说,我无法调试 codelet 代码。有人在 cuda 上调试过 openACC吗?或者我无法在codelet中放置断点。我应该怎么做才能调试?

我除了用那个编译 hmpp -d2 -kk -g gcc -g vecadd.c -o vecadd.x

我的 openACC 代码非常简单:

0 投票
1 回答
189 浏览

c - openACC 内核中的所有行总是在 GPU 上工作吗?

我想知道一些相关的内核结构。内核中的每一行都不可能在 GPU 上运行吗?

例如我有这个代码:

acc并行结构的情况也一样吗?

0 投票
1 回答
157 浏览

gpu - kernels 指令中的 openACC 代码有时会出错

我正在处理这个简单的代码片段顺便说一句,我用 0 初始化了 c 数组的所有元素。

当我查看生成的小码时,我看到在主机代码段(CPU)上分配了 c[0]。这意味着迭代适用于旧的 c 值(初始化值为 0)。因此迭代从未进入 c[i]=123 赋值。我的意思是代码返回了错误的结果:(你遇到过类似的事情吗?

0 投票
1 回答
423 浏览

c - OpenACC 的 C/预处理器标准宏?

在 OpenMP 中,当我们在 OpenMP 模式下编译时,我们已经_OPENMP定义了宏(几乎由我知道的任何编译器——gcc、pgi、intel ......)。我们在 OpenACC 模式下编译(Cray/pgi/其他编译器)时是否定义了类似的“标准”宏?

威拉万

0 投票
1 回答
190 浏览

cuda - 模块中的变量而不是通用语句

我正在尝试使用 cuda fortran 加速一段代码。该代码使用了变量定义中的通用语句,这在带有 cuda 的设备代码中是无效的。

我所做的是在模块中定义变量,而不是使用 common 语句,但这给了我一个错误的答案。我正在对普通代码执行所有这些操作,以便找到通用语句的替代方法。

代码(普通)

代码(无公用)

我认为它应该以这种方式工作,因为这些变量仅由这些函数使用,但事实并非如此。这是为什么?我能做些什么来解决这个问题?

0 投票
4 回答
18296 浏览

cuda - openacc 与 openmp 和 mpi 的区别?

我想知道 openacc 和 openmp 之间的主要区别是什么。MPI、cuda 和 opencl 呢?我了解 openmp 和 mpi 之间的区别,尤其是关于共享和分布式内存的部分它们中的任何一个都允许混合 gpu-cpu 处理设置吗?

0 投票
1 回答
245 浏览

fortran - 运行更大规模的程序时出现 OpenACC 错误

使用以下代码,是否正确?我有 2GB Geforce 750M 并使用 PGI Fortran 编译器。该程序适用于4000x4000数组,即使它不应该抱怨任何更高的东西,你可以看到我已经分配了一个9000x9000数组但是如果我使用一个值> 4000它会抱怨并引发运行时错误。

0 投票
1 回答
2414 浏览

memory - 如何获取设备上的可用内存

我正在尝试获取设备上有多少可用内存。为此,我从 fortran 代码中调用了 cuda 函数 cuMemGetInfo,但它为可用内存量返回负值,因此显然有问题。有谁知道我该怎么做?谢谢

编辑:

对不起,其实我的问题不是很清楚。我在 Fortran 中使用 OpenACC,我调用 C++ cuda 函数 cudaMemGetInfo。最后我可以修复代码,问题实际上是我使用的变量类型。切换到 size_ 修复了一切。这是我正在使用的 fortran 接口:

这是cuda代码

最后一个问题:我在 gpu 上推送了一个数组,并使用 cuMemGetInfo 检查了它的大小,然后我计算了它的大小,计算了字节数,但我没有相同的答案,为什么?在第一种情况下,它是 3052mb 大,在后一种情况下是 3051mb。这个 1mb 的差异可能是数组描述符的大小?这是我使用的代码:

0 投票
1 回答
942 浏览

c - 在 OpenACC 杂注行中使用 struct 数据类型

我正在使用 CAPS OpenACC 编译器。我尝试在 OpenACC pragma 行中的 struct 数据类型中使用动态数组。我的代码是这样的:

它编译成功。但是当我尝试运行时,我得到了这些错误

所以我的问题是,有什么方法可以将 struct 数据类型与 OpenACC 一起使用?此外,我的情况也适用于 struct in struct 这样的:

0 投票
1 回答
273 浏览

fortran - 无法并行化 OpenACC 循环

我有一个用 FORTRAN 编写的旧代码,我需要使用 OpenACC 对其进行加速,但是当我尝试使用指令时,它说存在 un,vn,pn 的依赖性,这会阻止并行性。是否可以并行化此循环?我是 OpenACC 的新手,但已与 OpenMP 并行化