コードジンのヘッダーが入ります Developers Summit 2009

サン・マイクロシステムズ株式会社

【12-B-4】並列処理開発を支援するコンパイラの機能
サン・マイクロシステムズ株式会社 東京ソフトウェア本部 製品開発統括部 大野圭一

マルチコアプロセッサの普及などを背景に、並列プログラミングへのニーズと関心は高まる一方だ。本セッションでは、並列処理プログラミングの基本的手法を概観した上で、並列処理のデファクトであるOpenMPおよび、サン・マイクロシステムズの提供する最新の統合開発環境「Sun Studio Express 11/08」について解説が行われた。

並列プログラミングモデルの基本から主なモデル、開発環境までをトータルに解説

サン・マイクロシステムズ株式会社 東京ソフトウェア本部 製品開発統括部 大野圭一氏は、「並列処理開発を支援するコンパイラの機能」と題して、並列化の意義や目的、並列化の開発に用いられる並列プログラミングモデルについて解説。さらに後半では、C/C++/Fortran統合開発環境であるSun Studio Express 11/08の紹介とデモを行った。

大野氏はまず並列化の意義について、「実効速度の向上を実現するための最適化テクニックの一つであり、1つのコアで処理にかかっている時間を、複数のコアを用いていかに短縮するかを追求するのが目的だ」と説く。また並列化の定義としては、処理の順序に依存性が無いことが確実であれば、その実行単位は並列であるとするという。

「別の言い方をすれば、それらの処理の実行順序に意味はないということだ。また処理の種類も『機械語命令の列』『プログラム行の集まり』『アルゴリズム』『解決しようとしている問題』といった具合に、粒度ごとに多様な分類が存在する」と大野氏は説明する。

並列化を実装するために、さまざまな並列プログラミングモデルが存在しているが、もっともよく知られているものとして、分散メモリモデルと共有メモリモデルの2種類があり、今回のセッションでは主に後者についての解説が行われた。モデルとしては、アプリケーションを並列化するための基本的なスレッドモデルに加え、自動並列化(-xautopar)、自動ベクトル化(-xvector=simd)などのコンパイルオプションなどが挙げられる。自動並列化とは、コンパイラが開発者に代わって並列化を行うもので、ループ処理を対象に繰り返し部分を分割して並列実行する。また、同一のバイナリであらゆるスレッド数に対応するという特徴を備えている。 また自動ベクトル化は、SIMD命令を使用するようにコンパイルするもので、SSE2以降をサポートしたプラットフォームで使用される。

また、C/C++、Fortranで共有メモリ型並列処理を記述するためのデファクトスタンダードAPIとして「OpenMP」がある。デファクトであるため技術的に成熟しており、非常に多くのコンパイラでサポートされている。構成要素としては、コンパイラ指示、実行時処理、環境変数などを持つ。OpenMP Architecture Review Board(ARB)が仕様を管理しており、2008年5月にVersion 3.0がリリースされている。大野氏はOpenMPの利点として「優れたパフォーマンスと拡張性に加え、要求されるプログラミング作業が他のモデルに比較して少ないといった特長を備えている。また、マルチコアアーキテクチャに適合しており、軽量、ハードウェアスレッド上での効果的な実行が可能だ」と述べた。

大野氏は最後に、並列処理開発の支援機能を提供するC/C++/Fortran統合開発環境として「Sun Studio Express 11/08」を、デモをまじえて紹介した。Sun Studio Expressは、Sun Studioの正式リリース版とは別に、開発者が新しいOSなどの機能の評価が行えるよう、半年に1回リリースされており、Sun Studio Express 11/08も、いわば新機能評価のための“最新版”の先行リリースとなっている。並列処理開発の支援に最適の環境であり、自動並列化と自動ベクトル化、デバッガ、パフォーマンスアナライザ、スレッドアナライザといったツールを提供している。このSun Studio Express 11/08は、Sun Developer NetworkのWebサイトから無料でダウンロードできる。

図1:OpenMPの例
問い合わせ先
サン・マイクロシステムズ株式会社
〒158-8633
東京都世田谷区用賀4-10-1 SBSタワー
URL: http://jp.sun.com/
戻る
コードジンのフッターが入ります