JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris Studio 12.3: C ユーザーガイド     Oracle Solaris Studio 12.3 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

1.  C コンパイラの紹介

2.  C コンパイラ実装に固有の情報

3.  C コードの並列化

3.1 並列化の概要

3.2 OpenMP に対する並列化

3.2.1 OpenMP の実行時の警告の処理

3.2.2 環境変数

3.2.3 並列コードでの restrict の使用

3.3 データの依存性と干渉

3.3.1 並列実行モデル

3.3.2 固有スカラーと固有配列

3.3.3 ストアバック

3.3.4 縮約変数

3.4 処理速度の向上

3.4.1 アムダールの法則

3.4.1.1 オーバーヘッド

3.4.1.2 ガスタフソンの法則

3.5 負荷バランスとループのスケジューリング

3.5.1 静的 (チャンク) スケジューリング

3.5.2 セルフスケジューリング

3.5.3 ガイド付きセルフスケジューリング

3.6 ループの変換

3.6.1 ループの分散

3.6.2 ループの融合

3.6.3 ループの交換

3.7 別名と並列化

3.7.1 配列およびポインタの参照

3.7.2 制限付きポインタ

3.8 メモリーバリアー組み込み関数

4.  lint ソースコード検査プログラム

5.  型に基づく別名解析

6.  ISO C への移行

7.  64 ビット環境に対応するアプリケーションへの変換

8.  cscope: 対話的な C プログラムの検査

A.  機能別コンパイラオプション

B.  C コンパイラオプションリファレンス

C.  ISO/IEC C 99 の処理系定義の動作

D.  C99 の機能

E.  ISO/IEC C90 の処理系定義の動作

F.  ISO C データ表現

G.  パフォーマンスチューニング

H.  Oracle Solaris Studio C: K&R C と ISO C の違い

索引

3.2 OpenMP に対する並列化

C コンパイラは、共有メモリーの並列化に OpenMP API をネイティブで受け入れます。この API は、一連の並列化プラグマで構成されます。OpenMP API の仕様の情報は、OpenMP Web サイト (http://www.openmp.org) にあります。

コンパイラの OpenMP サポートと OpenMP プラグマの認識を有効にするには、-xopenmp オプションを使用してコンパイルします。-xopenmp を使用しないと、コンパイラは OpenMP プラグマをコメントとして扱います。「B.2.131 -xopenmp[= i]」を参照してください。

詳細は、『Oracle Solaris Studio OpenMP API ユーザーズガイド』を参照してください。

3.2.1 OpenMP の実行時の警告の処理

OpenMP 実行時システムは、軽度のエラーに対し警告を発行できます。次の関数を使用すると、それらの警告を処理するコールバック関数が登録されます。

int sunw_mp_register_warn(void (*func) (void *) )

この関数のプロトタイプにアクセスするには、<sunw_mp_misc.h> に対する #include プリプロセッサ指令を発行します。

関数を登録したくない場合は、環境変数 SUNW_MP_WARNTRUE に設定して警告メッセージを stderr に送ります。

OpenMP に関係するプラグマ、環境変数、実行時関数など、OpenMP のこの実装に固有の情報については、『Oracle Solaris Studio OpenMP API ユーザーズガイド』を参照してください。

3.2.2 環境変数

並列化された C に関係する環境変数の一部を次に示します。OpenMP API 仕様で定義されている追加の環境変数や、Oracle Solaris Studio 実装に固有のものがあります。並列化に関係するすべての環境変数については、『Oracle Solaris Studio OpenMP API ユーザーズガイド』を参照してください。

3.2.3 並列コードでの restrict の使用

キーワード restrict は、並列化された C で使用できます。キーワード restrict を適切に使用することは、コードシーケンスを並列化できるかどうかを判定するために必要なデータの別名をオプティマイザが評価するのに役立ちます。詳細については、「D.1.2 C99 のキーワード」を参照してください。