共用メモリーの並列処理

XL C/C++ は、マルチプロセッサー・システム体系についてのアプリケーション開発をサポートします。

XL C/C++ での並列化アプリケーションの開発には、 以下に挙げるいずれの方法でも使用することができます。
  • ディレクティブ・ベースの共用メモリー並列処理 (OpenMP、SMP)
  • コンパイラーへ、共用メモリー並列処理を自動的に生成するよう指示する
  • メッセージ引き渡しベースの共用または分散メモリー並列処理 (MPI)
  • POSIX スレッド (Pthreads) 並列処理
  • fork() および exec() を使用した下位 UNIX 並列処理

AIX® オペレーティング・システムの並列プログラミング機能はスレッドの概念に基づいています。 並列プログラミングは、既存の単一プロセッサー・システムでの完全なバイナリー互換性を維持しながら、 マルチプロセッサー・システムの利点を活用します。 これは、単一プロセッサー・システムで作業するマルチスレッドのプログラムは、 再コンパイルせずにマルチプロセッサー・システムを活用することができることを意味します。

詳しくは、プログラムの並列処理 を参照してください。

OpenMP ディレクティブ

OpenMP ディレクティブは、XL C/C++ および 他の多くの IBM および IBM 以外の C、C++、および Fortran コンパイラーによってサポートされる API ベースのコマンドのセットです。

ユーザーは、OpenMP ディレクティブを使用して、 特定のループを並列化する方法をコンパイラーに指示することができます。ソースにディレクティブがあると、 コンパイラーが並列コードに対して並列分析を実行する必要がなくなります。 OpenMP ディレクティブは、並列処理に必要なインフラストラクチャーを提供する Pthread ライブラリーの存在を必要とします。

OpenMP ディレクティブは、アプリケーションを並列化するための重要な 3 つの問題に対処します。
  1. 節 (clause) およびディレクティブは、変数のスコーピングに使用できます。 変数を共用すべきではない場合が頻繁に起こります。 いいかえれば、プロセッサーはそれぞれ、 それ自身の変数のコピーを持っている必要があります。
  2. 作業共用ディレクティブは、コードの並列領域に入っている作業を複数のプロセッサー間で分散させる方法を指定します。
  3. ディレクティブは、複数のプロセッサー間での同期を制御するのに使用できます。

IBM® XL C/C++ for AIX, V13.1 から、XL C/C++ は、 OpenMP API バージョン 3.1 および OpenMP API バージョン 4.0 仕様から選ばれた機能をサポートします。詳しくは、OpenMP 4.0を参照してください。

プログラムのパフォーマンスの最適化について詳しくは、以下を参照してください。