• 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

まだリリースされて間もないせいか、
NVIDIAのOpenCL SDKを使っていると不可解なエラーに遭遇します。
掲題のようなエラーメッセージを出すのもその一例ですが、
以下のようなコード(一部抜粋)でエラーがでます。

c>>
float4 x = sphere->c;
dg->t = x.x;
<<--

しかし以下のように記述すると大丈夫です。

c>>
float x = sphere->c.x;
dg->t = x;
<<--

OpenCLコンパイラが生成したptxコードの中に'selp'というのが入るような場合に問題が発生するようです。

NVIDIAのOpenCL SDKの場合、*.clファイルをCLコンパイラがコンパイルして、ptxという中間言語に変換します。さらに、ptxをptxparse(PLANGというパッケージの一部らしい)が解析してllvmのbcに変換します。
このケースでは、CLコンパイラが吐き出すコードと、ptxparse側の認識が一致していない感じです。
とりあえず、バグが直るまでコンパイラの気持ちになって回避するしかありません。

posted by genki genki on Mon 1 Feb 2010 at 13:00 with 1 comment
瀧内元気 瀧内元気 02/01 13:30
ちなみに環境はLinux 64bit ドライバは 190.29