最近のCPUはマルチコア化によって処理能力を向上させているものが多くなっています。このようなプロセッサコアがメモリを共有する形で演算ユニットを構成している場合には、プログラムのマルチスレッド化によって性能を引き出すことが可能です。共有メモリ型並列計算機に対応するための並列化手法をまとめています。
一般的な解説としては、以下の教科書が参考になります。
コンパイラの自動並列化(スレッド並列)が使える環境では、その機能を利用してスレッド並列化(MPI と組み合わせればハイブリッド並列化)されたコードを生成することができます。 現在では多くのHPC用コンパイラが自動スレッド並列化機能を備えています。
また、コンパイラの診断結果を出力させることにより、 ソースコードのどの部分が自動並列化可能であったかを確認したり、 OpenMP指示行を挿入する部分の特定するために使うことも可能です。
参考:
OpenMPはマルチスレッド並列化を行うためのライブラリ規格です。 実装は各コンパイラに依存します。 コード中にコンパイラに対するpragma及び指示文(directive)を挿入することにより スレッド並列化を行います。 pragmaや指示文はOpenMPを処理しないコンパイラからはコメントとして扱われるので、 プログラムの元の実行条件を保存しながらスレッド並列化を行うことができます。 ループを分割し、複数のスレッドに割り当てるようなケースが典型的な例です。
Web上で利用可能な資料
MPIとOpenMPを同時に用いる場合には注意が必要です。以下の資料を参照して下さい。
スレッド並列(SMP)のコンパイラの自動並列化機能を利用し、FORTRANソースコードに OpenMP指示行を挿入する製品があります。
明示的にスレッド並列化を行うためのスレッドライブラリで、APIを通してスレッドの動作を制御します。IEEEによるPOSIX (Portable Operating System Interface)規格によって定められています。
書籍