OpenACCを使用してTesla GPUで使用するためにPGIコンパイラでコンパイルしたC++コードをいくつか作成しました。"無効なアドレス空間"エラーのデバッグ
警告なしでコンパイルは成功します。
私はプログラムを実行して、2つのエラーを取得:インターネットは問題が自動的に敷物の下に掃引されるようにenabling unified memoryを示唆する以外に、このことについて多くを知っているようには見えない
call to cuStreamSynchronize returned error 717: Invalid address space
call to cuMemFreeHost returned error 717: Invalid address space
を。私はそのような解決策ではない。
これをデバッグするにはどうすればよいですか?
CPU上でのみ実行されるC++コードでは、gdbを起動し、バックトレースを行い、「ああ!
しかし、今私は、CPUにとの2つの間を流れるGPUとその上に住んでいるコードを持っています。私はどのツールを使うべきかも知らない。
問題が解消されるまでコメントアウトを開始するのは間違いですが、それはあまりにも最適ではないようです。
ありがとう、マット!これをテストするまでにはおそらく2、3日かかりますが、あなたが提案したアドレスに問題のコード(再現可能な例になるほど短い)を電子メールで送信しました。 – Richard
問題は、ローカル変数がアトミックで使用されていることです。 Atomicsは、共有メモリまたはグローバルメモリでのみ使用できます。この問題を解決し、コードのパフォーマンスを向上させるための推奨される変更を含む最新のソースファイルをお送りしました。 –