[問題] opencl clEnqueueNDRangeKernel 花費時間

看板C_and_CPP作者 (尹烜)時間10年前 (2013/11/19 01:01), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) G++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) OpenCL 問題(Question): 目標是算出array裡數字的總和 當array裡有100000000 筆數字時, 單純呼叫 clEnqueueNDRangeKernel() //裡面的參數沒有打出來 即使kernel裡面甚麼都沒有寫 __kernel void addReduce_local( __global int* host_data, ) { } 仍然會花費0.3s的時間。 想請問大家是為什麼呢? ps1:如果kernel裡沒有 __global int* host_data 時, 則呼叫clEnqueueNDRangeKernel()感覺不出花費多少時間, 可是如果有的話,就要花費0.3s ps2:資料已經在配置記憶體的時候從CPU搬到GPU裏頭了。 謝謝 -----------------已解決---------------- 因為如果在clCreateBuffer使用 CL_MEM_COPY_HOST_PTR 則資料會在call第一次kernel的時候才複製過去 但如果使用 clCreateBuffer 搭配 clEnqueueWriteBuffer 好像資料就會直接複製過去。 所以複製資料的時間應該就被隱藏起來了。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.66.32 ※ 編輯: peter0319 來自: 140.113.66.32 (11/19 01:46)

11/19 15:51, , 1F
學弟太強拉
11/19 15:51, 1F
文章代碼(AID): #1IYaVCVz (C_and_CPP)