我试图通过在CUDA中使用固定的精确数字来加速我的代码。我需要64位。如何在不溢出和剪切数字顶部的情况下进行乘法运算。 CUDA中是否有128位类型。
typedef long long fixed;
#define _fxadd(a, b) ((a) + (b))
#define _fxsub(a, b) ((a) - (b))
#define _fxmul(a, b) ((a) * (b)) >> 32
答案 0 :(得分:2)
不,CUDA中没有内置的128位宽整数数据类型,但有一些integer intrinsics可能有助于您自己的实现。
例如,您可以使用__umul64hi
通过64位宽(无符号)整数操作数来获得更高的乘法运算:
计算128位乘积x * y的最高64位, 其中x和y是64位无符号整数。