我是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