4

Ubuntu10.1064ビットシステムでCUDA4.0/ Thrustベースの画像再構成コードをデバッグしていて、出力画像がランダムに表示されるこのランタイムエラーをデバッグする方法を見つけようとしています。 "ノイズ。" 私のコードには乱数ジェネレーターの出力がないので、たとえ間違っていても、実行間で出力が一貫していると思います。しかし、そうではありません...

このようなCUDAランタイムエラーをデバッグするための一般的な手順を誰かが持っているかどうか疑問に思っていました。cudaカーネルで共有メモリを使用していません。グローバルメモリを含む競合状態を回避するために苦労しましたが、何かを逃した可能性があります。

gpu ocelotを使用してみましたが、CUDAおよびCUSPARSE関数呼び出しの一部を認識できません。

また、私のコードは一般的に機能します。これらの非決定論的な結果が得られるのは、この1つの設定を変更したときだけです。その設定に関連するすべてのコードを確認しましたが、何が間違っているのか理解できません。ここに投稿できるものに蒸留できれば、そうするかもしれませんが、現時点では複雑すぎてここに投稿できません。

4

1 に答える 1

2

すべてのカーネルに適切なブロックサイズ/剰余の処理があることを確認しますか?非決定論的な結果が見られた1つの場所は、配列の最後にデータ要素が処理されていないときに発生しました。

私たちのカーネルは元々、256要素の整数倍であることがわかっているデータを対象としていました。そこで、256のブロックサイズを使用し、単純な除算を行ってブロック数を取得しました。その後、データが任意の長さに変更されたとき、残りの255以下の要素は処理されませんでした。出力内のこれらのスポットには、ランダムなデータが含まれていました。

于 2011-07-21T00:21:48.827 に答える