マルチコア x86向けCUDA C/C++コンパイラを発表(2012年1月

http://www.pgroup.com/about/news.htm#47 (2011 年 12 月 14 日)
以下は、ST マイクロエレクトロニクス株式会社のプレスリリース内容です。
2012 年 1 月
Portland Group、
マルチコア x86 向け CUDA C/C++コンパイラを発表
並列化を行うプログラマが業界標準の AMD 社および Intel 社の CPU を最大限活用できる
新しい CUDA コンパイラ
ST マイクロエレクトロニクス(NYSE:STM、以下 ST)の完全子会社で、高性能コンピューティング
(HPC)向けコンパイラの主要サプライヤである Portland Group(以下 PGI)は、マルチコア x86 プラッ
トフォーム向けに性能最適化された PGI CUDA C/C++コンパイラ(CUDA-x86)を、2012 年 1 月にリリ
ース予定の PGI 2012 と共に出荷することを発表しました。
CUDA は、NVIDIA 社製 GPU の処理能力を利用することで演算性能を大幅に向上させる NVIDIA 社の
並列演算アーキテクチャです。2010 NVIDIA GPU Technology Conference(GTC)において最初に発表さ
れた CUDA-x86 は、GPU だけではなく広範囲なシステムに対するプログラミング・モデルにまで CUDA
の適用範囲を拡げるものです。CUDA-x86 のリリースは、x86+GPU アーキテクチャの統合並列プラット
フォーム化に向けた重要なステップとなります。
PGI のディレクタである Douglas Miles は、次の様にコメントしています。「CUDA-x86 は、異なる
CPU+GPU システムのプログラミングを包括的にサポートするという、PGI のロードマップにおける重
要なマイルストーンの 1 つです。PGI Accelerator コンパイラによるディレクティブ・ベースの GPU プロ
グラミングは、GPU のプログラミングを飛躍的に簡略化します。CUDA エクステンションは、本質的に
大きな並列効果を生む並列アルゴリズムを明示的に記述できることに加え、特定のプラットフォームに
対するきめ細かな最適化を実現します。両アプローチとも、アクセラレータ・ベースのシステムの普及
に伴い、非常に重要になると考えられます。」
NVIDIA 社の CUDA マーケティング担当ディレクタである Sanford Russell 氏は、次の様にコメントして
います。「現在、CUDA は、世界で最も好評を得ている GPU 並列プログラミング・モデルです。開発者
は、1 つの同じのコードで複数のアーキテクチャに対応できる柔軟性を求めています。CUDA-x86 のリ
リースは、異なるコンピューティング環境で動作する高性能並列処理アプリケーション向け汎用プログ
ラミング・モデルとしての CUDA のメリットを提供します。」
CUDA-x86 向け PGI コンパイラは、CUDA C/C++言語を AMD 社 / Intel 社製の汎用マルチコア x86 マイ
クロプロセッサ用ネイティブ並列プログラミング言語として処理します。CUDA-x86 は、NVIDIA 社の
GPU 用 CUDA C/C++言語を完全にサポートしているため、CUDA アプリケーションのソース・コードを
再コンパイルして x86 ホスト上で実行することが可能です。CUDA-x86 を使用することで、NVIDIA GPU
アクセラレータの有無に関わらず、x86 ベースのワークステーション、サーバおよびクラスタ上で実行
できるように CUDA アプリケーションをコンパイルしたり、最適化を図ったりすることができます。x86
を対象としてコンパイルされた CUDA C/C++アプリケーションは、Intel 社 / AMD 社製 CPU の複数コア
とストリーミング SIMD(Single Instruction Multiple Data)機能を使用して並列実行を実現します。
マルチコア x86 用 PGI CUDA C/C++コンパイラの特徴
•
x86 ホストに対するネイティブ CUDA C/C++の最適化および並列化
•
•
•
•
•
•
•
•
x86 ホスト上での CUDA C/C++の低オーバヘッド・ネイティブ並列実行
1 コアを使用して各 CUDA スレッド・ブロックを実行し、同期化を自動的にできる限り排除
新しい AVX 命令のサポートを含め、AMD 社製および Intel 社製最新プロセッサに対応
デバイス・カーネル関数を自動的にインライン化し、シェブロン構文を並列 / ベクトル・ループ
に変換
NVIDIA 社の GPU 用 CUDA C/C++言語を x86 ホスト上で完全サポート
GPU テクスチャ・メモリを完全サポート
NVIDIA CUBLAS ライブラリをサポート
Intel 社 / AMD 社製 CPU に対する全ての PGI ホスト最適化をサポート
さらに、GPU デバイス向けの PGI CUDA C/C++が 2012 年中旬にリリースされる予定です。このリリー
スでは、PGI Unified Binary™テクノロジにより、NVIDIA GPU がある場合は使用し、GPU が無い場合は
マルチコア x86 をデフォルトで使用することが 1 つの実行バイナリで可能になります。
性能データ
PGI は、一般的な並列プログラミング・モデルの性能比較として、CUDA-x86 バージョンの LBM ベンチ
マーク(Parboil ベンチマーク・スイートの一部)をコンパイルし、OpenMP を使用して並列化した同じ
プログラムと実行時間を比較しました。各プログラミング・モデルのプログラム実行時間を以下の通り
です。
ベンチマーク
LBM
OpenMP 実行時間
221 秒
CUDA 実行時間
221 秒
システム : 4 core Intel i7 920(2.67GHz)、12GB、Red Hat Enterprise Linux 5.3
性能に関する詳細は、PGI のウェブサイト( http://www.pgroup.com/cuda-x86)をご覧ください。