论坛
BBS
会员中心
Space
用户
登录
用户名
Email
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
本版
帖子
用户
本版
帖子
用户
CUDA
技术
工具
资源
入门
社区
论坛
开启辅助访问
切换到宽版
好友
帖子
收藏
道具
勋章
任务
设置
我的收藏
退出
腾讯QQ
微信登录
论坛
›
加速计算
›
CUDA
›
查看内容
发表新帖
查看:
6386
|
回复:
1
64位除法运算和模运算
辛普森
该用户已被删除
辛普森
|
显示全部楼层
|
阅读模式
1
#
电梯直达
发表于 2016-11-9 09:08:01
6386
1
我这里需要做(
64位的)除法运算和模运算,无符号八位到无符号
64
位的扩展。大家有没有简单的方法,多谢了!
使用道具
举报
回复
emily
|
显示全部楼层
2
#
发表于 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.html
和
http://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
使用道具
举报
回复
支持
反对
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
发表回复