我是OpenACC的新手,这是GPU加速和CPU的新编程标准.根据我的知识,OpenACC是一种编译器指令的语言,我们可以直接在任何地方加速代码,而无需更改整个代码.与OpenMP不同,此编程标准适用于GPU.
现在我怀疑在这里提出..
我们有OpenCL加速,现在是OpenACC(它非常容易使用,只需提供编译器提示).对于主机程序加速,我们可以简单地放置编译器指令,那么如果我们有内核呢?即现在我想写我的GPU(c语言)代码,我该怎么办?像OpenCL我需要编写example.c&example.cl ?? 那么需要添加OpenACC编译器指令吗?或者以哪种方式?如果是这样,那么OpenACC在这里的用途是什么,因为我们正在编写*.c和*.cl文件,(我们需要检查所有内存约束以及编写OpenCL的所有内容,这是一项艰巨的工作).
如果我想使用传值的概念怎么办?例如:
void sum(int &u, int &v)
{ return u+v; }
__kernel void testing(__global int *a, __global int *b, __global int *c)
{ int i = get_global_id(0);
int u = max(a,b);
int v = min(b,c);
int x = sum(u,v);
}
Run Code Online (Sandbox Code Playgroud)
现在我的错误是'&'符号.我无法使用传递参考概念传递参数.该怎么办?
我是OpenCL的新手.我在OpenCL的帮助下在Internet上编写了一个矢量加法代码.我已经包含了一个头文件,即CL/cl.h使用#include.
我使用的是NVIDIA显卡,OpenCL实现是NVIDIA_GPU_Computing_SDK.我的OpenCL头文件驻留在此路径中/opt/NVIDIA_GPU_Computing_SDK/OpenCL/common/inc.通过在编译代码时添加此路径,我可以通过linux终端运行OpenCL程序.但现在我想为此代码编写CMake文件.由于此Path问题,CMake文件适用于C程序,但不适用于OpenCL程序.在终端,我以前输入$cmake .,之后$make,它将搜索由cmake创建的Makefile,现在我的错误是在输入命令后make
fatal error: CL/cl.h: No such file or directory!
Run Code Online (Sandbox Code Playgroud)
现在告诉我如何将此头文件包含到CMake文件中?
int main()
{
int* p= (int*)malloc(8);
for(i=0;i<128;i++)
p=0;
}
Run Code Online (Sandbox Code Playgroud)
我想为所有128位分配所有零.以上代码是否正确?我想澄清一下.我的目标是将128位分配给一个变量并将所有零分配给所有128位.
我正在使用OpenCL.启用时,我的工具不会生成内核统计信息OUT-OF-ORDER EXEC MODE.所以我决定使用启用分析,clCreateCommandQueue但后来我意识到如何同时使用两个属性?我现在要做的是,我想在异步(out-of-orderexecution)模式下运行profing enable.