新千葉 ガーベージ・コレクション

FPGA マガジンやインターフェースで書けなかったこと等をちょぼちょぼ書いてます。@ryos36

GPU でエラー

cudaErrorCudartUnloading というエラーが出た。 なんかしらんが Unloading 中だという。 どうも、悪いタイミングで cudaFree を呼んだかららしい。

~MyClass() {
  cudaFree(my_memory);
} 

みたいなことをして、なおかつ

MyClass myclass;

とかグローバル変数に置くと、どうも Cuda の後処理の方が先に走って、cudaFree が後になるらしい。そうなると、たぶん cudaFree はすでに GPU へ送っているプログラムを実行しようする(あるいはその情報を使おうとする)が、すでに unloading されているという話らしい。ということで、

~MyClass() {
  // nothing to do
}
term() {
  cudaFree(my_memory);
}

とかして、main ないで

myclass.term();
exit(0);

と順番通りにすると、、、、うまくいきました!!も~。