共有メモリ並列計算

最近のCPUはマルチコア化によって処理能力を向上させているものが多くなっています。このようなプロセッサコアがメモリを共有する形で演算ユニットを構成している場合には、プログラムのマルチスレッド化によって性能を引き出すことが可能です。共有メモリ型並列計算機に対応するための並列化手法をまとめています。

一般的な解説としては、以下の教科書が参考になります。

  • Clay Breshears, 並行コンピューティング技法, オライリー・ジャパン, 2009
  • (株)フィックスターズ, マルチコアCPUのための並列プログラミング, 秀和システム, 2006

コンパイラの自動並列化機能

コンパイラの自動並列化(スレッド並列)が使える環境では、その機能を利用してスレッド並列化(MPI と組み合わせればハイブリッド並列化)されたコードを生成することができます。 現在では多くのHPC用コンパイラが自動スレッド並列化機能を備えています。

また、コンパイラの診断結果を出力させることにより、 ソースコードのどの部分が自動並列化可能であったかを確認したり、 OpenMP指示行を挿入する部分の特定するために使うことも可能です。

参考:

OpenMP

OpenMPはマルチスレッド並列化を行うためのライブラリ規格です。 実装は各コンパイラに依存します。 コード中にコンパイラに対するpragma及び指示文(directive)を挿入することにより スレッド並列化を行います。 pragmaや指示文はOpenMPを処理しないコンパイラからはコメントとして扱われるので、 プログラムの元の実行条件を保存しながらスレッド並列化を行うことができます。 ループを分割し、複数のスレッドに割り当てるようなケースが典型的な例です。

OpenMPの参考資料

Web上で利用可能な資料

OpenMPを使用する際の注意

MPIとOpenMPを同時に用いる場合には注意が必要です。以下の資料を参照して下さい。

OpenMP化プログラムの自動生成

スレッド並列(SMP)のコンパイラの自動並列化機能を利用し、FORTRANソースコードに OpenMP指示行を挿入する製品があります。

  • 日立 Parallel Program Generator
    KEKスーパーコンピューターシステム・システムAでは、フロントエンド上で Parallel Program Generatorが利用可能です。

Pthreads

明示的にスレッド並列化を行うためのスレッドライブラリで、APIを通してスレッドの動作を制御します。IEEEによるPOSIX (Portable Operating System Interface)規格によって定められています。

Pthreadsの参考資料

書籍

  • B.Nichols et al., Pthreadsプログラミング (オライリー・ジャパン, 1998)
  • (株)フィックスターズ, マルチコアCPUのための並列プログラミング, 秀和システム, 2006

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-05-14 (木) 13:46:38 (3263d)