このところ、コンピューティング・コアのスピードは上がっていません。上がっているのは、プロセッサの並列度です。この傾向はここ10年ほど続いていますし、今後もまだしばらくは続くものと思われます。
研究者であれば、OpenACCで並列処理を活用し、科学計算用アプリケーションの実行速度を高めることができます。すでに、そのような形で多くの研究者が大きな前進を実現してきました。
HPCコミュニティがOpenACCに注目したのは、GPUなどの最新プロセッサに合わせた並列プログラミングがシンプルに行えるからです。その証拠に、Cray、PGI、NVIDIAなどの大手HPCベンダが4年前に開発して以来、OpenACCプログラミング規格を採用した研究者や科学者は8000人以上に達しています。
この威力をもっと多くの研究者に体験していただきたいと考え、NVIDIAでは、OpenACC Toolkitをリリースすることにしました。OpenACCによる並列プログラミング・ツールのオールインワン・スイートで、利用料金などは一切かかりません。
OpenACC Toolkit-無償で大学関係者に提供
NVIDIAのOpenACC Toolkitがあれば、驚くほど簡単にOpenACCを始められます。研究者のみなさんがGPUのプログラミングをさっと簡単に行うために必要なものは、すべてそろっているのです。
まず、OpenACC 2.0規格をサポートしたPGI Accelerator Fortran/C Workstation Compiler Suite for Linuxが使えます。業界をリードするこのコンパイラが大学関係の開発者や研究者の方々に無償で公開されるのは初めてのことです(商業的に利用したい場合も、最初の90日間は無償で試用できます)。
NVProf Profilerも用意されています。コードを高速化できるシンプルなコンパイラ・ヒント、OpenACC「ディレクティブ」をどこに追加すればいいのかを教えてくれるプロファイラです。自習に便利なサンプル・コードも、シンプルで実用的なものが数多く用意されています(参考: OpenACC Toolkitウェブサイト)。
OpenACC-1回のコーディングで各種環境に対応
シンプルなディレクティブが役に立つのは、研究者がアクセラレーテッド・コンピューティングの力を活用する場合だけではありません。既存のCPUコードがそのまま残るのも大きなメリットとなります。コードの作成に費やしてきた膨大な時間を無駄にしません。
OpenACCの特筆すべき点としては、パフォーマンスにポータビリティがあることが挙げられますが、特にPGI OpenACCコンパイラはその点で大きく進化しています。このコンパイラは、GPUで実行するときだけでなく、x86マルチコアCPUで実行する際にもOpenACCコードをスピードアップできるのです。これは、史上初の快挙です。
つまり、GPUのないシステムでも、このコンパイラなら、x86 CPUコア用にコードを並列化してくれるのでパフォーマンスが高まるわけです。GPUが搭載されていれば、GPUに合わせたコードの並列化が行われます。その場合、マルチコアCPUに対してパフォーマンスが5倍から10倍に高まります。
このx86 CPUポータビリティ機能は、いま、ベータ版として一部顧客に公開している段階で、今年の第4四半期には、一般公開できるものと考えています。
計算化学アプリ-100行以下のコードを12倍に高速化
OpenACCにどれほどのメリットがあるのか、オーフス大学qLEAP理論化学センターのポスドク研究員、Janus Juul Eriksen氏の例を見てみましょう。Eriksen氏は、複雑な大規模分子シミュレーションに利用されるLS-DALTONというアプリケーションの維持管理を担当しておられます。
オークリッジ国立研究所にあるGPUアクセラレーテッドのTitanスーパーコンピュータを使い、LS-DALTONでもっと大規模な問題のシミュレーションができないかとEriksen氏は考えました。でも、研究者というのは往々にしてそうですが、氏も、自己流でFortranによるプログラミングができるだけで、コンピュータ・サイエンスを正式に学んだことがありません。
それでも、OpenACCを使い、LS-DALTONの中核となるアルゴリズムをCPUバージョンの12倍まで高速化することに成功しました。かかった時間はわずか数日。しかも、世界有数のパワフルなスーパーコンピュータで実行するというのに、アルゴリズムに手を加える必要はまったくありませんでした。
OpenACC Toolkitをダウンロード!
GPUアクセラレーテッドのマシンでCやFortranのアプリケーションを動かしたいとお考えでしたら、いまがチャンスです。NVIDIAのツールキットをダウンロードしてみましょう。