在CUDA中实现固定的精度数字

时间:2015-08-21 13:39:03

标签: c cuda

我试图通过在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

1 个答案:

答案 0 :(得分:2)

不,CUDA中没有内置的128位宽整数数据类型,但有一些integer intrinsics可能有助于您自己的实现。

例如,您可以使用__umul64hi通过64位宽(无符号)整数操作数来获得更高的乘法运算:

  

计算128位乘积x * y的最高64位,   其中x和y是64位无符号整数。