我试图找出原因cudaMemcpyFromSymbol()
存在。似乎“symbol”func 可以做的所有事情,nonSymbol cmd 也可以做。
symbol func 似乎可以轻松移动数组或索引的一部分,但这也可以使用 nonSymbol 函数轻松完成。我怀疑非符号方法会运行得更快,因为不需要符号查找。 (尚不清楚符号查找计算是在编译时还是运行时完成。)
我为什么要使用cudaMemcpyFromSymbol()
vs cudaMemcpy(
)?
cudaMemcpyFromSymbol
是从任何地方复制的规范方法静态地设备内存中定义的变量。
cudaMemcpy
不能直接用于复制到静态定义的设备变量或从静态定义的设备变量复制,因为它需要设备指针,而主机代码在运行时不知道该指针。因此,需要一个可以查询设备上下文符号表的 API 调用。两个选择是,cudaMemcpyFromSymbol
它在一个操作中执行符号查找和复制,或者cudaGetSymbolAddress
它返回一个可以传递到的地址cudaMemcpy
。如果您只想执行一份副本,则前者可能更有效;如果您想在主机代码中多次使用该地址,则后者可能更有效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)