我是OpenCL的新手.但是,我理解C/C++基础知识和OOP.我的问题如下:是否有可能并行运行和计算任务?理论上可行吗?下面我将描述我试图做的事情:
例如,任务是:
double* values = new double[1000]; //let's pretend it has some random values inside
double sum = 0.0;
for(int i = 0; i < 1000; i++) {
sum += values[i];
}
Run Code Online (Sandbox Code Playgroud)
我在OpenCL内核中尝试做的事情(我觉得这是错误的,因为它可能同时从不同的线程/任务访问相同的"sum"变量):
__kernel void calculate2dim(__global float* vectors1dim,
__global float output,
const unsigned int count) {
int i = get_global_id(0);
output += vectors1dim[i];
}
Run Code Online (Sandbox Code Playgroud)
这段代码错了.如果理论上有可能并行运行这样的任务,如果有的话,我会非常感谢有人回答我 - 如何!