我有一个100MB字符数组(h_array
),使用cudaHostAlloc()
分配标记cudaHostAllocWriteCombined
。
程序首先将数据复制到主机上的h_array
。当h_array
已满时,它会将h_array
复制到设备上的d_array
,并完成一些处理。处理完成后,h_array
重用,因为从h_array[0]
开始将新数据再次复制到其中。新数据旨在覆盖先前存储在h_array
中的内容。
但是,在处理完成后将新数据复制到h_array
时,我遇到了分段错误。当我使用常规malloc
时,没有seg错误错误。
有什么问题?它固定时我不能重写内存吗?
谢谢!
答案 0 :(得分:1)
你的CUDA背景可能会以某种方式从你身下被拉出来。
例如,如果您在一个随后退出的线程中分配固定主机内存,则内存将会消失。
确保执行分配的线程坚持不懈!