19

Haskell をコンパイルして Xeon Phi コプロセッサで実行する方法はありますか?

Intel の一部の研究者は最近、Haskell Research Compiler (公開されていないため、結果を本質的に再現不可能にする)について報告し、 Haskell Gapを測定しました(場合によっては Haskell のパフォーマンスが C を上回ることを示しています)。彼らはPillarと呼ばれる中間言語 (C-- に類似) を介してコンパイル ルートを記述し、それをC にコンパイルしてから、iccを使用して Phi で実行可能なオブジェクト コードを作成できるようにします。

GHC は LLVM へのコンパイルをサポートするか、ネイティブ コードを直接生成します (NCG)。私が知る限り、利用可能な Phi を対象とする NCG も、Phi の LLVM バックエンドもありません。iccにアクセスすると、 C経由のルートが可能に見えますが、現時点でそれがどれほど現実的かはわかりません (GHC の C コード ジェネレーターはサポートされなくなったと思います。LLVM IR-to-C バックエンドについても同じことが言えます。間違っていたら訂正してください)。

したがって、次の 3 つのルートが思い浮かびます。

  1. 未登録モードでGHCをコンパイルし、-fvia-c 次にiccでコンパイルします。

  2. 古い GHC バージョンを使用して C コードを生成し、iccを使用します

  3. 古いLLVMバージョンを使用してGHC LLVMを経由し、LLVMからCを生成してからiccを使用します

どのルートが最も実行可能ですか (理由/理由)? 他の可能性はありますか ( pillar2cなどのツールは (まだ?) 公開されていないため、Pillar ルートは却下しました)。

関連する質問は、Phi の x86 互換性に関するものです。SSE/AVX 命令がサポートされていないようで、一部のオブジェクト コードをgccclangでコンパイルすると実行に失敗するようです。

更新

LLVM カンファレンスで Intel 関係者とチャットした後、彼らが Phi LLVM バックエンドをリリースする可能性は低いようです。ただし、次世代の Xeon Phi は AVX512 をサポートします。

4

1 に答える 1

1

Haskell を C 経由でコンパイルした場合、その C コードを直接記述できたので、結果は C より速くならないように制約されませんか? あなたの質問は、再現しようとしているプロジェクトが別の言語でコンパイルされていることを示しています。

そのため、利用可能なツールがあなたがやりたいことを行うのに十分に進んでいるかどうかはわかりません。申し訳ありません。

于 2014-03-10T14:32:34.763 に答える