用户
 找回密码
 立即注册
辛普森 该用户已被删除
发表于 2016-11-9 09:08:01
66661
我这里需要做(64位的)除法运算和模运算,无符号八位到无符号64位的扩展。大家有没有简单的方法,多谢了!
使用道具 举报 回复
发表于 2016-11-9 09:10:27
有一些方法,可以尝试一下(仅供参考):
1.       模运算
如果y是2^n,那么x%y = x &(y-1)

2.       除法运算 x/y
如果y是2^n,那么x/y = x >>n

3.       u8 -> u64转换
•           直接强制转换
y = (uint64_t)x;
•           与“0”按位进行或操作
x|0ull
•           使用union?
union {
uint64_t a;
uint8_t b[8];
}
•           使用ptx转换嵌入到CUDA中
例如u32->u64:
__device__ uint8_t  u8_to_u64 (int x) {
           unsigned long long int y;
           asm(“cvt.u64.u32 %0, %1;” : “=l”(y) : “r”(x));
           return y;
}
你可以参考http://docs.nvidia.com/cuda/inline-ptx-assembly/index.htmlhttp://docs.nvidia.com/cuda/parallel-thread-execution/index.html

Some other reference:
Math API: http://docs.nvidia.com/cuda/cuda ... .html#axzz4Oib3DpNG
cuBlas: http://docs.nvidia.com/cuda/cublas/index.html
使用道具 举报 回复 支持 反对
发新帖
您需要登录后才可以回帖 登录 | 立即注册