0

openCLのsincos関数のdouble8にfloat8varをキャストする際に問題が発生しました。だから私は次のことを試しました:

float8 a,b,c;

a = convert_float8(sin(convert_double8(a))); // worked
a = convert_float8(sincos(convert_double8(b),convert_double8(&c))); // failed

プログラムのビルドに失敗したというopenCLエラーがスローされます。最初、sincosはdouble8タイプを取り込めないと思いましたが、double8 varを渡すだけでも機能しますが、float8をdouble8にキャストしようとすると、上記のコードのように失敗します。

float8 a;
double8 b,c;

a = convert_float8(sincos((b),(&c))); //worked

誰かがそれを正しくキャストする理由/方法を知っていますか?

ありがとう。

4

1 に答える 1

1

最初のコード例で&cは、はタイプです。つまり、値float8*を指すメモリアドレスです。このアドレスをへのポインタに変換するためにfloat8使用することはできません(これは、このコンテキストでの2番目の引数として期待されるものです)。私はこれがうまくいくはずの賢明な方法を考えることができません。convert_doubledouble8sincos

正しいタイプの一時変数を明示的に作成する必要があります。

float8 a,b,c;
double8 c_double;
a = convert_float8(sincos(convert_double8(b), &c_double));
c = convert_float8(c_double);
于 2012-09-14T18:04:37.167 に答える