我是 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];
}
我在 OpenCL 内核中尝试做的事情(我觉得这是错误的,因为它可能同时从不同的线程/任务访问相同的“sum”变量):
__kernel void calculate2dim(__global float* vectors1dim,
__global float output,
const unsigned int count) {
int i = get_global_id(0);
output += vectors1dim[i];
}
这段代码是错误的。如果有人回答我是否理论上可以并行运行这些任务,如果可以的话,我将非常感激 - 如何!