重写通过cudaHostAlloc()分配的内存

时间:2011-03-24 07:07:56

标签: cuda

我有一个100MB字符数组(h_array),使用cudaHostAlloc()分配标记cudaHostAllocWriteCombined

程序首先将数据复制到主机上的h_array。当h_array已满时,它会将h_array复制到设备上的d_array,并完成一些处理。处理完成后,h_array 重用,因为从h_array[0]开始将新数据再次复制到其中。新数据旨在覆盖先前存储在h_array中的内容。

但是,在处理完成后将新数据复制到h_array时,我遇到了分段错误。当我使用常规malloc时,没有seg错误错误。

有什么问题?它固定时我不能重写内存吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

你的CUDA背景可能会以某种方式从你身下被拉出来。

例如,如果您在一个随后退出的线程中分配固定主机内存,则内存将会消失。

确保执行分配的线程坚持不懈!