3
我想這對專家來說是一個相當容易的問題,但我無法在網上找到任何答案。給定一個簡單的例子:如何用PyCUDA處理python列表?
問題:
listToProcess = []
for i in range(0, 10):
listToProcess.append(i)
名單應轉移到GPU上,作進一步處理。然後,我將繼續使用通用的cuda程序進行mem-copy:
import sys
import pycuda.autoinit
import pycuda.driver as cuda
listToProcess_gpu = cuda.mem_alloc(sys.getsizeof(listToProcess))
cuda.memcpy_htod(listToProcess_gpu, listToProcess)
然後調用內核本身。但是列表中沒有緩衝區接口,所以memcpy_htod()
崩潰。我嘗試不同的方法太多,但最終它會導致
的問題
- 一個人怎麼轉移從Python程序到GPU內核中的內容的列表?
- 如何爲內核指定列表的數據類型(即浮點數,或整數或...)的內核?
**提示**:如果傳輸一個浮點數列表,請在Python中使用'dtype = np.float32',在CUDA/Kernel-side使用'float *'。否則,格式化是錯誤的,你不能將實際值分配給數組。 – user3085931