我是OpenCL的新手。但是,我了解C/C++基础知识和OOP。 我的问题如下:是否可以并行运行总计算任务?这在理论上是可能的吗?下面我将介绍我所试图做的:是否可以在OpenCL中并行运行求和计算?
的任务,例如:
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内核做(我觉得这是错误的,因为或许它访问相同的“总和”变量从不同的线程/任务同时):
__kernel void calculate2dim(__global float* vectors1dim,
__global float output,
const unsigned int count) {
int i = get_global_id(0);
output += vectors1dim[i];
}
此代码是错误的。如果有人回答我,如果理论上可以并行运行这些任务,并且如果是这样的话,我将非常感激。
这是一个典型的下降问题。看看[这里](http://developer.download.nvidia.com/compute/cuda/1.1-Beta/x86_website/projects/reduction/doc/reduction.pdf)一步一步解释优化这个过程,核心架构(它是CUDA,但是原理完全一样,除了关于模板的部分可能)。虽然有关该主题的更多介绍性材料可能会更有帮助,但我会将其留给适当的答案。 – 2013-03-04 11:43:55
非常感谢!现在我知道这是一个普遍的问题,并且会很快解决它! – Vladimir 2013-03-04 12:28:20