0

これは、openCL のコンパイル時引数に関するものです。固定サイズの定数の配列があり、次のようにコンパイル時の引数として渡しています。

 -DCOEFF=0.1f,0.2f,0.5f,0.2f,0.1f

そしてカーネルでは、私はそれを次のように読んでいます。

__kernel void Smoothing(__global const float *in, __global float *out)
{
    float chnWeight[] = {COEFF};

}

このように intel-SDK を使用すると、係数を別の引数としてカーネルに渡す場合と比較して、パフォーマンスが大幅に向上します。

問題は AMD にあり、これはコンパイルされていません。次のエラーが表示されます。

0.2f:
Catastrophic error: cannot open source file "0.2f"

1 catastrophic error detected in the compilation of "0.2f".
Compilation terminated.

AMD (カンマ) では、コンパイル時の引数の区切り文字としても使用され、これがエラーの原因となっていることを理解しています。

この問題を解決するための助けをいただければ幸いです。前もって感謝します。

4

2 に答える 2

0

この問題は、バージョン 937.2 と 1268.1 の間に AMD OpenCL に導入されました。回避策は次のとおりです。

-DCOEFF=0.1f,0.2f,0.5f,0.2f,0.1f と 置き換えます。 -D COEFF=0.1f,0.2f,0.5f,0.2f,0.1f

于 2013-10-17T13:51:34.967 に答える
0

文字列を引用してみてください-DCOEFF="0.1f,0.2f,0.5f,0.2f,0.1f"

コンパイラはファイル「0.2f」を探しているようで、それが 2 番目の要素であるため、最初の要素とコンマの後、コンパイラは入力を COEFF 定義の一部として解釈することを既に停止しています。

于 2013-10-15T15:02:04.293 に答える