[問題] CUDA中memory的使用方式?

看板C_and_CPP作者 (qqq)時間15年前 (2010/05/08 03:44), 編輯推噓3(304)
留言7則, 5人參與, 最新討論串1/1
有問題的code: #define SIZE 1000 ... { ... int tmp = 10; float data[SIZE]; for (int i = 0; i < SIZE; i++) data[i] = 1; float *device; cudaMalloc((void**)&device, sizeof(float)*SIZE); cudaMemcpy(device, data, sizeof(float)*SIZE, cudaMemcpyHostToDevice); ... gpufun<<<block, thread>>> (device, tmp); } __global__ void gpufun(float *a_device, int a_tmp) { ... } 常常會遇到上述這樣的程式 其中,會將data 從host memory中copy到device memory 然後透過pointer device來access memory 我想請問,那tmp這個data呢? 既沒有在device中malloc空間來存放tmp 也沒有利用memcpy將tmp儲存到device,為什麼呢? 另外,GPU在使用a_tmp時,這份data到底是存放在哪塊memory上呢? 感謝~~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.178.189

05/08 03:57, , 1F
tmp應該是放在電腦的主記憶體上?
05/08 03:57, 1F

05/08 04:00, , 2F
可是很多教學文件都教說"在GPU中要使用到的data,必須從host"
05/08 04:00, 2F

05/08 04:02, , 3F
"memory複製到device memory中",難道不用複製過去也能用??
05/08 04:02, 3F

05/08 04:25, , 4F
你覺得 a_device 這個指標的值在 gpufun 執行時存在哪裡?
05/08 04:25, 4F

05/08 04:25, , 5F
a_tmp 只是同理而已
05/08 04:25, 5F

05/08 11:10, , 6F
他會自動把CPU tmp copy到 GPU a_tmp上
05/08 11:10, 6F

05/09 00:36, , 7F
a_tmp是透過shared memory傳的
05/09 00:36, 7F
文章代碼(AID): #1Bv6siba (C_and_CPP)