0

私はOpenCLでこのコードを持っています:

__kernel void vector_add(__global float *C) {
    int i = get_global_id(0);
    float t =3.5f;
    C[i] = t;
}

GPU で実行すると、変数 C の戻り値は 3.5 なので、問題ありません。しかし、CPU で実行すると、戻り値は 3.0 です。これは、任意の float 値で発生します。

しかし、このコードを実行すると:

__kernel void vector_add(__global const float A, __global float *C) {
    int i = get_global_id(0);
    C[i] = A;
}

そして、変数 A に 3.5 の値を渡しました。これは CPU と GPU で正常に実行されます。

なぜこれが起こるのですか?

4

0 に答える 0