GPU复制问题机制

有一个问题不太理解,

  1. 针对GPU的全局内存的一块连续数据,如果希望将其数据移动到全局内存的另一个地址,那么是在host端使用cudaMemcpy效率高、速度快?
    还是写一个核函数,在每个线程中负责赋值一小部分这样更快些?

  2. cudaMemcpy的机制是什么?它的执行效率怎么样?和利用多个GPU核来执行相比较呢?

  3. 第一个问题,如果是shared memory呢?是否可以从host memory直接读入到shared memory中。 shared memory中赋值是在核函数中执行快?还是host端执行快?

如果只是将数据移动,直接使用cudaMemcpy效率会好。使用shared memory会多一层操作,造成额外的开销