SIMD指令的吞吐量低于32位整数运算。
如果是 SM2.0(仅标量指令版本)则低 2 倍。
如果是 SM3.0,则低 6 倍。
什么情况下适合使用它们?
如果您的数据已经以 SIMD 视频指令本机处理的格式打包,则需要多个步骤对其进行解包,以便可以由普通指令处理。
此外,与普通算术运算相比,SIMD视频指令的吞吐量还应该乘以实际执行的运算数量。
例如,对于指令vadd4 http://docs.nvidia.com/cuda/parallel-thread-execution/index.html#simd-video-instructions-vadd4-vsub4-vavrg4-vabsdiff4-vmin4-vmax4,正在对打包的 32 位数量(4 字节整数数量)执行 4 次整数加法。为了用普通的整数加法来复制这种行为,需要相当复杂的指令序列来将数据解压缩为 4 个int
数量,进行 4 次整数加法,然后重新打包结果。如果您尝试使用单个整数加法来执行此操作,则一个结果的进位可能会损坏下一个结果。vadd4
还提供钳位能力和整数加法不可用的其他行为。
在SM2.0的情况下,仅执行4次操作的比率vadd4
与未打包数据上必要的 4 个整数相加将使其具有吸引力。在SM3.0的情况下,当将拆包和打包添加到普通整数加法例程时,vadd4
看起来很有吸引力。情况变得更加有吸引力与CC 5.0 http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#arithmetic-instructions.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)