假设我有超过设备内存可用量的巨大矩阵(以某种方式处理,例如相乘)。有没有一种标准的方法来处理这样的问题?也许,零拷贝内存的使用隐含地提供了一种在需要时复制块的方法?
或者我必须通过加载数据来明确处理它?</ p>
答案 0 :(得分:2)
CUDA提供了CUDA Streams
的机制。在一个数据流到来之前,将在当时处理上一个流。
此机制用于处理不适合GPU内存的矩阵。
数据被分成块数,这些块通过流复制。实际上,如果你一次复制chunk-chunk并处理一个chunk,那么它又是单线程程序。相反,您应该至少复制大小为16或32的Stream数组。
这是使用异步memcpy函数覆盖数据的复制。