cuda _c programming_guide.pdf 中
for (int i = 0; i < 2; ++i)
cudaMemcpyAsync(inputDevPtr + i * size, hostPtr + i * size,
size, cudaMemcpyHostToDevice, stream[i]);
怎么理解当中的size?
MyKernel<<<100, 512, 0, stream[i]>>>
(outputDevPtr + i * size, inputDevPtr + i * size, size);
核函数size怎么理解?
LZ您好:
目测您提供的代码,这个size应该是某段数据的长度,也做计算指针的偏移量使用。
原代码的意图可能是指,每个stream完成计算size这一段数据,而所有的stream计算的数据又是连续存放的。
以及,您的标题和您询问的具体内容似乎并不十分契合,敬请注意。
祝您编码顺利~
谢谢解答。
我认为i*size 应该是计算指针偏移量,这里的size指的是拷贝数据的个数,最后一个单独的size指的是这段数据的空间大小,例如如果是int型的数据,这里的size的值是否是死则sizeof(int)*n(数据个数),这样理解对么?
LZ您好:
这里的size应该是以字节BYTE为单位的,即您最后的看法是正确的。
如果您有完整的代码,一般可以看到size的定义。
如果您只有这段代码,那么您可以根据cudaMemcpyAsync()参数的类型来推断。
祝您好运~
谢谢解答。
不客气的,欢迎您常来论坛讨论问题。
祝您编码顺利~