1
我有一個100MB的字符數組(h_array
),使用cudaHostAlloc()
分配的標記爲cudaHostAllocWriteCombined
。重寫通過cudaHostAlloc()分配的內存
該程序首先將數據複製到主機上的h_array
。當h_array
已滿時,它將在設備上覆制h_array
至d_array
,並完成一些處理。當處理完成時,h_array
是重複使用,意思是新數據再次從h_array[0]
複製到它。新數據旨在覆蓋之前存儲在h_array
中的內容。
但是,如果在處理完成後將新數據複製到h_array
,則會出現分段錯誤。當我使用常規的malloc
時,沒有seg故障錯誤。
出了什麼問題?我是否可以在固定內存時重寫內存?
謝謝!
你是否用cudaSafeCall封裝了所有CUDA運行時調用,並且在內核調用後使用了cudaCheckError?這意味着在分段故障之前的很多問題。 – 2011-03-24 10:37:18
你應該可以做到這一點。你能減少代碼大小來舉例說明你的問題並向我們展示嗎?通常問題在於細節... – CygnusX1 2011-03-24 13:09:35