CUDA的逻辑转变

时间:2011-05-26 16:05:36

标签: cuda bit-shift shift

rshift = ((J[i]-1)*((2*net)-J[i]) >> -1);

L[i] = rshift + K[i]-J[i];

当我编译它时,我得到“错误:表达式必须具有对应于第一行的积分或枚举类型”。除了'我'都有双精度。

它既不左右也不右移。我正在使用fedora 12,我有nvcc 3.2,V0.2.1221。对于c ++(g ++编译器),它可以很好地工作。

但当我尝试

rshift = ((J[i]-1)*((2*net)-J[i]) >>= -1);

L[i] = rshift + K[i]-J[i];

它是“错误:表达式必须是可修改的左值”我尝试了很多但无法解决它。任何想法?

1 个答案:

答案 0 :(得分:1)

回答这个问题 - 在CUDA C中没有浮点类型的位移(C也不是C ++)。通过评论中发布的问题,似乎混淆的来源是翻译一些传统Fortran代码的错误尝试,其中也没有浮点位移支持。