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 に答える