私の質問@Eric Shiyin Kangに返信していただきありがとうございますが、接頭辞「ホスト」または「デバイス」ではなく、いくつかの試行錯誤の後、エラーが「メンバーデータは常に定数」であることがわかりました例を作成します:
struct OP {
int N;
__host__ __device__
OP(const int n): N(n){};
__host__ __device__
UI operator()(const UI a) {
int b = a * N;
N++;
return b;
}
}
thrust::transform(A.begin(), A.end(), B.begin(), OP(2) );
この場合、A が {0, 1, 2, 3, ... } の場合、B は {0, 2, 4, 6, 8} ですが、実際の B は {0, 3(1*( 2+1))、8(2*(3+1))、15(3*(4+1))、....}
この状況の原因がわからないのですが、推力設計のせいですか?誰か教えてくれませんか?