私は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 カーネルでやろうとしたこと (おそらく、異なるスレッド/タスクから同じ「合計」変数に同時にアクセスするため、間違っていると感じます):
__kernel void calculate2dim(__global float* vectors1dim,
__global float output,
const unsigned int count) {
int i = get_global_id(0);
output += vectors1dim[i];
}
このコードは間違っています。そのようなタスクを並行して実行することが理論的に可能であるかどうか、そして可能である場合、誰かが私に答えてくれれば非常に感謝します-どのように!