[問題] CUDA和CPU記憶體問題

看板C_and_CPP (C/C++)作者 (SaoAn)時間15年前 (2011/06/17 02:29), 編輯推噓0(008)
留言8則, 3人參與, 最新討論串1/1
假如mycuda.cu void mycuda(int *data) { 宣告GPU array1 用cudaMemcpy把data複製到array1 array1做些運算 cudaFree掉array1 } 這樣在main.cpp大概是 int main() { 宣告data1 mycuda(data1); free掉data1 return 0; } 這樣沒什麼問題, 可是現在我想 void mycuda(int *data) { 宣告array1 array2 //可能只要宣告一次? 用cudaMemcpy把data複製到array1 array1和array2做些運算 複製array1到array2 等下次data更新之後再算一次 } int main() { 宣告data1, data2, data3... mycuda(data1); mycuda(data2); mycuda(data3);.... free掉data1, data2, data3... } 希望有人看得懂我想表達什麼, 就是call mycuda(data2)的時候會用到之前data1的東西 但是我不希望又要重新傳一個data1進去, 可是現在這種寫法好像不行, 還會memory leak 所以不知道有什麼方法可以把gpu記憶體留著下次利用, 煩請各位解答, 感激不盡 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 24.161.183.254

06/17 03:44, , 1F
data1不要更動就可以不用重新傳了
06/17 03:44, 1F

06/17 03:45, , 2F
gpu的記憶體只要不free都可以重複使用啊
06/17 03:45, 2F

06/17 11:15, , 3F
array1 array2宣告成global,在int最底層free掉.
06/17 11:15, 3F

06/17 11:16, , 4F
在int最底層free掉->在int main()底層free掉
06/17 11:16, 4F

06/17 11:50, , 5F
這種試一下不就知道了...
06/17 11:50, 5F

06/17 11:51, , 6F
你說好像不行 是試過了發現不行 還是自我感覺呢?
06/17 11:51, 6F

06/17 17:36, , 7F
能不能用置底文提供source code來參考看看? 應該會比較
06/17 17:36, 7F

06/17 17:36, , 8F
容易找出問題
06/17 17:36, 8F
文章代碼(AID): #1D-akED6 (C_and_CPP)
文章代碼(AID): #1D-akED6 (C_and_CPP)