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

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

当我编译这个时,我得到与第一行相对应的“错误:表达式必须具有整数或枚举类型”。除了 '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];

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

4

1 回答 1

1

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

于 2011-05-27T07:23:35.650 回答