ノート
訪問者数 1519   初稿 2013-03-15   最終更新 2013-03-15 (金) 10:27:21

GPU and LLVM

記事(2012-05-09) NVIDIA、CUDAコンパイラでオープンソース・コミュニティに貢献

オープンソースのコンパイラ、LLVMがNVIDIA GPUをサポートしたと発表

LLVM:llvm.org

参考になりそうなページ 関東GPGPU勉強会 LLVM meets GPU python pynvvmを作ってみた話 38ページ目参照

パラレルに恋して (2012/12に開催のGPGPU Advent Calendarまとめ)

その中から

LLVM meets GPU again! 曰く

CUDA4.1以降のnvccは、Compute Capability 2.0以上のコードを生成する際にLLVM IRのサブセットであるNVVMを経由して最適化等を行ってから、NVIDIAの規定する中間表現であるPTXへの変換を行なっています。今年に入ってこの成果がLLVM本家にマージされ、バージョン3.2で正式にお目見えすることになりました。LLVM 3.2の正式リリースは2012/12/16と一週間ほど先に予定されていますが、リポジトリにはすでに3.2用のブランチが切られています。今回は一足先にLLVM 3.2を使用して、LLVM IRからPTXを生成してみましょう!

replを作ろう  上記の続きらしい。曰く

Read-Eval-Print-Loop、それは闇プログラマーとなりし者に訪れる運命・・・彼は逝ってしまったわ、円環の理に導かれて・・・
ということでそれが世界の選択なのでreplを作ってLLVM PTX Backendで遊んでみましょう。最後まで読めば、この行為が壮大な無駄であることがきっとわかるはず!

PTXの説明か?
PTX Back-End: GPU PRogmramming with LLVM

他の言語という話では、
OpenCLとか
OpenACCPGIのOpenACCとか
Aparapiとか

OpenACCを新たなテコにするNVIDIAのGPUコンピューティング戦略

OpenACCを新たなテコにするNVIDIAのGPUコンピューティング戦略 (PC Watch 2012-04-17)

曰く

Crayの前身であるCray Researchを設立したシーモア・クレイ氏は、スーパーコンピュータで重要なのはメモリ帯域であると主張していた。しかし、現在のGPUでは、メモリ帯域と演算パフォーマンスの間には大きなギャップが開いてしまっている。Scott氏は、その問題には、根本的な解決策がないと説明する。

我々は、この問題を緩和するために、次の数世代のうちに、新しいレベルのメモリ階層を導入しようと考えている。3D積層によって、メモリチップをGPUと同じパッケージに収めることだ。その場合は、パッケージに積層メモリが載り、さらにメインメモリがDIMMなどで載るという形となるだろう。

NVIDIAは、データ移動をある程度明示的にコントロールすることが電力効率を高めるとする。Cell Broadband Engine(Cell B.E.)の時にも似たような議論があった。電力効率を第1に考えると、考え方がある程度似通って来る。そして、こうしたアイデアは、プログラミングモデル側でのサポートを必要とする。

GPUコンピューティングの抱える問題の1つは、プログラミングの複雑性にある。この問題に対しては、よりコンパイラに任せる新しいモデルが昨年(2011年)相次いで紹介された。1つは、Microsoftが発表しAMDが支持する「C++ AMP」、もう1つがNVIDIAが旗を振る「OpenACC」だ。OpenACCはCUDAより抽象度を引き上げたプログラミングモデルで、コンパイラディレクティブ(Directive)によって、コンパイラにGPUコードを生成させる。C++ AMPと、かなり似通ったアプローチのモデルだ。

OpenACCのようなコンパイラディレクティブ(Directive)ベースのプログラミングモデルがハイブリッドアーキテクチャでは理にかなうと考えている。ディレクティブベースによって、ソフトウェア開発者は、より手軽に、高い生産性で、よりポータブルなハイブリッドコンピューティングのコードを構築することができる。オークリッジ国立研究所(Oak Ridge National Laboratory:ORNL)では、我々のGPUを使った新しいスーパーコンピュータTitan向けに、OpenACCでアプリケーションを書いている。

では、Intel MICに適したプログラミングモデルは何なのか。Scott氏は、ハイブリッドアーキテクチャであるMICには、やはりGPUと同じプログラミングモデルが適すると指摘する。

コンパイラを洗練させることで、よりポータブルかつ生産性の高いプログラミングモデルを実現する。プログラミングでは当たり前の流れが、GPUプログラミングでも始まっている。では、よりローレベルのプログラミングモデルであるCUDAはどうなって行くのか。Scott氏は、コミュニティベースのコンパイラインフラストラクチャへと移行することで、より入口と出口を広げると説明する。

「我々は、CUDAのコンパイラインフラストラクチャをLLVM(Low Level Virtual Machine)コンパイラストラクチャに移行している。LLVMはオープンであるため、より迅速なイノベーションが期待できる。現在、CUDAソースコードを学術コミュニティと業界のツールパートナーに公開しているところだ。

で、NVIDIAのOpenACC:

OpenACC であなたのプログラムを加速しよう GPU アクセラレーションディレクティブのオープンスタンダード

もう一言見つけたので

CUDA プロファイラを使う


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-03-15 (金) 10:27:21 (1738d)