每个周期可以执行四次8位操作(SIMD操作)还是只执行一次?通常,较高位被设为零,8位被视为32位字,其较高位为零以执行这种操作。 目前处理器中是否有任何可用的硬件功能可以帮助每个周期执行更多数量的低位操作(特别是在NVIDIA GPU中)?
答案 0 :(得分:6)
AFAIK在GPU上没有“可以在一个周期内在GPU的32位ALU上执行”的任何算术指令“GPU上的大多数算术功能单元都是流水线 {{3} }。一个单元可以每个时钟发出一个新操作,它可以每个时钟退出一个操作,但它不能“在一个周期内”执行操作。
GPU有resulting in latencies of around 5-25 clock cycles,其中一些类似于您所描述的内容。 simd vector intrinsics因特定GPU类型和特定操作类型而异。
因此,例如,kepler上QMutexLocker
SIMD内部的吞吐量(对4字节向量数据打包成32位字进行4次8位算术运算)应近似为与32位整数运算(加,减等)相同的吞吐量。大多数其他SIMD内在函数的吞吐量都会降低。