【发布时间】:2011-08-02 18:12:32
【问题描述】:
我的程序运行 2 个线程 - 线程 A(用于输入)和 B(用于处理)。我还有一对指向 2 个缓冲区的指针,这样当线程 A 完成将数据复制到缓冲区 1 时,线程 B 开始处理缓冲区 1,线程 A 开始将数据复制到缓冲区 2。然后当缓冲区 2 已满时,线程 A 复制数据进入缓冲区 1,线程 B 处理缓冲区 2,依此类推。
当我尝试将 cudaMemcpy Buffer[] 放入 d_Buffer 时,我的问题就出现了(这之前是由主线程 cudaMalloc'd,即在线程创建之前。Buffer[] 也是由主线程 malloc'd)。我收到“无效参数”错误,但不知道哪个是无效参数。
我已将我的程序简化为单线程程序,但仍使用 2 个缓冲区。也就是说,复制和处理是一个接一个地进行,而不是同时进行。 cudaMemcpy 行与双线程行完全相同。单线程程序运行良好。
我不确定错误在哪里。
谢谢。
问候, 雷恩
【问题讨论】: