2016-10-05 11 views
0

ハッシュを実行するためのCUDAカーネルを作成しています。入力を取得したら、まず定義済みのハッシュバケットサイズでハッシュしてみてください。オーバーフローが発生した場合は、より大きなバケットサイズを使用してハッシュを再実行する必要があります。だから私はバケットのオーバーフローが発生した場合、私はホストコードにエラーを報告することができますビルドされたcuda関数があるかどうか疑問に思っています。私は、あらかじめ定義されたメモリ位置に何かを書き込んでホストコードに読み込ませることができることを知っていますが、もし利用可能であれば、ビルドされたプリミティブを使用する方が好きです。CUDAカーネルがホストコードにエラーを報告できるようにする、ビルドされたCUDA関数がありますか?

+0

何もないとは思わない。あなたが言ったように、あなたはどこかに何かを書いてから、それをホストから読む必要があります。 – leo

答えて

2

CUDAは現在サポートされているすべてのハードウェア(sm_20以降)にassertion supportを持っています。ドキュメントごとに、次のようなことを行うことができます。

__global__ void testAssert(void) 
{ 
    int is_one = 1; 
    int should_be_one = 0; 
    // This will have no effect 
    assert(is_one); 
    // This will halt kernel execution 
    assert(should_be_one); 
} 

これを利用して、エラー状態を呼び出し元のホストコードに反映させることができます。

関連する問題