0

このようなcudaカーネルを持つ

__global__ void kernel(...)
{
    free( 48190);
}

おそらく良い考えではありません。48190現在の実行中に割り当てを解除する有効なアドレスではないとしましょう。

ホストにいた場合、ランタイムはおそらくすぐに実行を停止し、segfault エラーをスローして、「ヒープが破損しています」などの厄介な説明を表示します。

しかし、メッセージ以外のすべてを実行したらどうなるでしょうか? そのポイントに達したときに、何が起こったのかについて何も言わずに爆破して終了したらどうなるでしょうか。それがそのコードが私に与えるものです。私のマシンで上記のカーネルを書いた場合、それはコンパイルされ、実行され、それが私のプログラムが行うすべてのことである場合 (そのカーネルを呼び出すだけ)、エラーメッセージなしで喜んで終了します:(。 cudaMemcpy で失敗したために何かがうまくいかなかったerror code 30: unknown error

私の質問は次のとおりです。これは起こるはずですか?カーネル呼び出しで何か問題が発生したときに、ある種のエラーの説明を有効にする方法はありますか?

4

1 に答える 1

3

カーネル呼び出しで何か問題が発生したときに、ある種のメッセージの説明を有効にする方法はありますか?

はい、cuda エラー チェックを行います。ここに 記載。

于 2013-11-01T17:14:36.973 に答える