我认为由于CUDA可以进行64位和128位的加载/存储,它可能具有一些类似于float3的矢量类型的加法/减法等内置函数,可以用较少的指令完成,就像SSE一样。
CUDA是否有这样的功能?
我认为由于CUDA可以进行64位和128位的加载/存储,它可能具有一些类似于float3的矢量类型的加法/减法等内置函数,可以用较少的指令完成,就像SSE一样。
CUDA是否有这样的功能?
// put some floats in half-precision registers
cvt.rn.f16.f32 h0, f0;
cvt.rn.f16.f32 h1, f1;
cvt.rn.f16.f32 h2, f2;
cvt.rn.f16.f32 h3, f3;
mov.b32 p1, {h0, h1}; // pack two f16 to 32bit f16x2
mov.b32 p2, {h2, h3}; // pack two f16 to 32bit f16x2
add.f16x2 p3, p1, p2; // SIMD f16x2 addition
_tzcnt_u32(x)
,或者GNU C的 __builtin_popcount(x)
这些都是针对特定汇编指令或许多CPU提供但ISO C忽略的操作的众所周知的内部函数示例。)最好提到实际的内部函数,我假设它们将采用unsigned
或int
参数,除非有一个typedef。 - Peter Cordes