4
如果沒有,拋出異常時釋放cudaMalloc
ed內存的標準方式是什麼? (請注意,我無法使用Thrust。)有沒有CUDA智能指針?
如果沒有,拋出異常時釋放cudaMalloc
ed內存的標準方式是什麼? (請注意,我無法使用Thrust。)有沒有CUDA智能指針?
您可以使用RAII成語,並分別將cudaMalloc()
和cudaFree()
調用到對象的構造函數和析構函數中。
一旦拋出異常,你的析構函數將被調用,這將釋放分配的內存。如果你把這個對象包裝成一個智能指針(或者使它像一個指針一樣),你將得到你的CUDA智能指針。
什麼會拋出異常? – talonmies 2013-05-12 16:29:01
任何函數或類成員 - 即很多事情 – mchen 2013-05-12 16:43:46
我的意思是,宿主代碼是否會針對CUDA運行時錯誤拋出異常,或者這些其他錯誤條件是否與CUDA無關? – talonmies 2013-05-12 16:52:11