次に、このリリースの C、C++、および Fortran コンパイラによって実装される OpenMP 3.0 共有メモリー API の新機能および変更された機能を一覧します。詳細は、『Oracle Solaris Studio 12.2: OpenMP API ユーザーガイド』を参照してください。
dbx デバッガでの OpenMP デバッグのサポートdbx に対して次の拡張が行われました。
OpenMP の領域、タスク、およびスレッドセットについての情報を表示するための新しいコマンド。
print —s、thread —info、whatis、および where の各コマンドに対する拡張。
新しい OpenMP 同期イベント。
自動スコープ宣言がタスク領域に拡張されました。この機能により、プログラマは並列領域およびタスク領域内の変数のスコープを明示的に決定する必要がなくなります。コンパイラが、コードを分析してスマートルールを適用することで、変数のスコープを決定します。
新しい SUNW_MP_WAIT_POLICY 環境変数は、プログラムでのスレッドの待機動作を改善し、処理を待機 (アイドル) するスレッド、バリアーで待機するスレッド、および taskwait で待機するスレッドの動作をプログラマが細かく制御できるようにします。
SUNW_MP_WARN OpenMP 環境変数に新しい機能が追加されました。OpenMP 実行時ライブラリによって発行される警告メッセージの制御に加えて、SUNW_MP_WARN を TRUE に設定すると、ユーザーによって明示的に設定された環境変数やライブラリによってデフォルトで設定される環境変数など、すべての環境変数の設定が実行時ライブラリによって情報提供用に出力されます。
Oracle Solaris プラットフォームでの SUNW_MP_PROCBIND 環境変数によって制御される動作が変わりました。SUNW_MP_PROCBIND を TRUE に設定すると、メインスレッドはバインド時に実行しているプロセッサにバインドされます。バインド時とは、並列領域が最初に発生するとき、または omp_set_num_threads() など OpenMP の実行時ルーチンを最初に呼び出すときを指します。スレーブスレッドは、メインスレッドがバインドされているプロセッサから始めてラウンドロビン方式でバインドされます。
OpenMP プログラムでのデータの競合およびデッドロックを検出するには、スレッドアナライザツールを使用します。このリリースでは、スレッドアナライザの機能が、再コンパイルを行わなくてもバイナリ内のデータの競合を検出できるように拡張されました。詳細は、『Oracle Solaris Studio 12.2: スレッドアナライザユーザーズガイド』を参照してください。