配列内の最小値を見つけるために、共有メモリを使用してリダクションを実行する cuda カーネルを作成しました。これは、ここにあるよく知られた例と非常によく似ています。
https://www.sharcnet.ca/help/index.php/CUDA_tips_and_tricks#Reduction
単一の CPU スレッドから実行している場合、ブロックごとに任意の数の CUDA スレッドで正常に動作します (デバイスの最大数: 1024 まで)。
ブロックあたりの CUDA スレッドの数が十分に少ない (256) いくつかの (20) CPU スレッドから実行すると、正常に動作します。
しかし、マルチ CPU スレッドで CUDA スレッドの数を増やすとすぐに、すべてがクラッシュします。
リダクションを実行するカーネルの行を削除しようとしました (そのため、アレイにはいくつかの操作のみが残りますが、CUDA スレッド間の通信はありません)。任意の数の CPU スレッドからブロックごとに任意の数の CUDA スレッドで正常に動作します。 .
私の問題がどこから来たのかについてのアイデアはありますか? それを修正する方法はありますか?よろしくお願いします。
PS: 単一の GTX650 を使用しています。
PS2: 私の英語力が少し下手で申し訳ありませんが、それは私の母国語ではありません....