2012-08-13 126 views

回答

3

沒有。您無法將設備指針獲取到CUDA陣列中(要傳遞給cuMemset *()),並且NVIDIA從未爲CUDA陣列提供過memset函數。

您必須將某些主機內存清零並在CUDA陣列中執行memcpy(或memcpy's),或者(如果您的應用程序僅在SM 2.0或更高版本上運行)用曲面存儲滾動您自己的內存。

+0

謝謝!第二個建議是「用表面商店推出自己的產品」是什麼意思?你的意思是編寫一個使用surf3Dwrite來清除數組的內核? – morph 2012-08-14 07:30:40

+0

是的,這正是我提出的 - 並且很高興,因爲表面加載/存儲是無類型的,您可以編寫一個模板化函數來存儲任何大小的操作數。有關2D中的示例,請參見CUDA手冊「紋理」一章中的第10.9.2節。 http://www.cudahandbook.com/uploads/Chapter_10._Texturing.pdf – ArchaeaSoftware 2012-08-15 01:29:38

+1

謝謝!我實現了這兩種方法,並在內核上使用cuMemcpyAtoA方法,因爲它的運行速度顯着加快! – morph 2012-08-15 15:14:36