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);
と順番通りにすると、、、、うまくいきました!!も~。