現在、pycuda/cuda経由でGPUのいくつかの数値メソッドをプログラミングしています。自分のカーネルを作成しています。いくつかの点で、私は少なくとも1000結合ODEのエラーを推定する必要があります。私は1000以上のエントリを持つベクトルのカップルをコピーする必要はありませんので、私は基本的な最大機能である(ポストの下に)カーネルを作成しました。これらの%(T)と%(N)は実行時に作成している文字列の置換で、この質問には関係ありません(Tは複雑なデータ型を表し、Nは結合ODEの数を表します)。GPUカーネルブロックサイズ/スレッドなしグリッドサイズ
私の質問は、並列計算が必要ないため、スレッドを使用しないことです。この関数をPythonで呼び出すと、ブロックサイズまたはグリッドサイズを指定する必要がありますか?カーネルの起動で
__global__ void get_error(double *max_error,%(T)s error_vec[1][%(N)s])
{
max_error[0]=error_vec[0][0].real();
for(int ii=0;ii<%(N)s;ii=ii+1)
{
if(max_error[0] < error_vec[0][ii].real())
{
max_error[0]=error_vec[0][ii].real();
}
}
return;
}
ブロックサイズが1でグリッドサイズが1の場合、GPUで実行スレッドが1つだけ正確に実行されます。 –
@RobertCrovellaありがとうございます。スレッドIDにリンクされた変数はありませんが、gpuは実行するスレッドを1つ使用しますか? – malxmusician212
が正しい。 C/C++プログラマとしてあなたの知識を信じてください。 –