2015-08-21 16 views
0

我想通过在CUDA中使用固定精度数字来加快我的代码速度。我需要64位。我怎样才能做这个乘法而不会溢出并截断我的数字的顶部。 CUDA中是否有128位的类型?在CUDA中实现固定精度数字

typedef long long fixed; 
#define _fxadd(a, b) ((a) + (b)) 
#define _fxsub(a, b) ((a) - (b)) 
#define _fxmul(a, b) ((a) * (b)) >> 32 

回答

2

没有,没有内置的CUDA 128位宽的整数数据类型,但也有一些integer intrinsics,可能与自己的实现提供帮助。

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

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