query: tag:llvm

まだリリースされて間もないせいか、
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

LLVM勉強会以来、バックグラウンドプロセスでずっとyak shavingしてました。
debian/etchでllvm-2.3をソースからインストールする方法のメモです。

  1. gcc-4.3.1をソースからインストールする。
    最新のllvmは、コンパイルするのにgcc-4.3以降が必要らしい。
    全部入れようとするとgfortranのコンパイルあたりで
    symbol \fstat64' is already defined`というようなエラーが出てしまったので、
    色々解決策を探していたけれど、llvmをインストールする上では必要ない
    ことに気がついたので、gcc-coreとgcc-g++のみソースからmakeしてインストール
  2. llvm-2.3をソースからインストール。

で完了です。

See Also

posted by genki genki on Tue 26 Aug 2008 at 15:58 with 0 comments