私は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ですが、テンプレートについての部分を除いて、prinicはまったく同じです)。トピックの入門資料がもっと役立つかもしれませんが、私はそれを適切な答えに任せています。 –
ありがとうございます!今私はそれが一般的な問題であり、それを解決するために熱いことを知っていることを知っている! – Vladimir