均一な 3D グリッドで偏導関数を近似するための非常に単純なコードがあります。私は Scientific Linux で実行していますが、nvcc でコンパイルしてもエラーや警告は表示されません。cudaSuccess
for everyの戻り値をチェックしてcudaMalloc()
呼び出すcudaMemcpy()
と、実際にはすべて正常に機能します。
デバッガーなしでプログラムを実行すると、カーネルが実際に実行されていないように見えることを除いて、すべて正常に動作しているように見えます。出力用に割り当てた (すべてゼロを保持するように初期化された) 配列は、カーネルの起動後も、各スレッドに配列のインデックスを 5 に設定させるようなばかげたことをしても、すべてゼロのままです。
したがって、このコードで cuda-gdb を使用しようとすると、0x9 がcudaLaunch()
返されます。エラー 9 が何であるかわからないため、Google 検索ですぐに見つけることができませんでした。コードを書き出す前に、番号 9 のエラーはどれですか? 数字が特定のエラーにどのように一致するかのリストはどこかにありますか?
エラー番号が特定のエラーにどのように対応するかを示すオンライン リストはありますか?
このマシンにはコードがありませんが、次のようなものです。
dim3 dimGrid(1,1,1);
dim3 dimBlock(mx,my,mz);
x_derivative<<<dimGrid,dimBlock>>>(f_d,df_d);
どこで (現在) mx=my=mz=64
.
おそらく、64^3 のスレッド数は大きすぎますか? 明らかに、GPU 上の実際のスレッドはそれほど多くありません (Tesla C2050 fwiw です) が、任意の数のスレッドを指定できると思いましたか? これがアルゴリズムの「単純な」バージョンであることも注目に値するため、パフォーマンスを最適化するつもりはありません (まだ)。