16

私は Repa と Accelerate で遊んでいます。どちらも興味深いものですが、どちらをいつ使用し、いつもう一方を使用するかはわかりません。彼らは一緒に成長していますか、ライバルですか、それとも単に異なる問題のために成長していますか?

4

1 に答える 1

14

Repa は、Haskell でプログラムされ、Haskell ランタイムで実行される、効率的な配列の構築と走査のためのライブラリです。Repa は、GHC のオプティマイザーとスレッドのパフォーマンスに依存しています。任意の Haskell コードを Repa (mapパラメーターとして Haskell 関数を取るなどの Repa 関数) と混在させることができます。

Accelerate は、GPU プログラミング用の組み込み言語です。Accelerate は、パフォーマンスを独自のコンパイラと GPU 並列処理に依存しています。Accelerate ライブラリを使用するコードは、実際には配列計算を行いません。これは、Accelerate 独自のコンパイラによって処理され、配列データを実際に処理するコードを生成する Accelerate プログラムを生成します。

Haskell で GPU をプログラミングする場合は、Accelerate が主要なオプションです。コードを CPU で実行したい場合は、Repa が最適です。Accelerate はマルチコア コードを生成しません。別のターゲットをサポートできるように設計されていますが、私が知る限り、競争が激しいため、Accelerator で CPU をサポートする動機は低いです。

編集: Obsidian と Nikola は、GPU プログラミングの代替手段です。ドキュメントを簡単に調べてみると、Obsidian の方が範囲が狭いように見えます。形式でパイプラインを表現でき(f >=> g >=> h)ます。Nikola の機能セットは、Accelerate のものに近いようです。私はそれらを実際に比較する経験がありません。

于 2011-06-07T04:02:49.757 に答える