OpenMP 3.1 の機能紹介 その2 | 並列化フォーラム | フォーラム

iSUS に投稿されている記事の内容や、IA プラットフォーム上でのソフトウェア開発に関するトピックを開発者同士でディスカッションできる場としてフォーラムを公開しています。

運営ルールはフォーラムの利用案内をご覧ください。
フォーラムの使い方はこちら

 
フォーラムに投稿するにはログインが必要ですログイン

OpenMP 3.1 の機能紹介 その2

メンバー投稿

3:34 AM
2012年4月11日


iSUS編集部 – 菅原

投稿数 206

1

ちょっと時間が空いてしまいましたが、OpenMP3.1の機能紹介その2です。

さて今回は OMP_NUM_THREADS 環境変数の新機能を紹介します。この環境変数は、

set OMP_NUM_THREADS=4 (windows では)

のように、OpenMP並列領域で利用するスレッド数を変更することができます。

OpenMP3.1 では、

set OMP_NUM_THREADS=4,2 (Windows では)

のような設定ができるようになりました。これは ….. ?
OpenMP並列領域が入れ子になって OMP_NESTED が true の場合、入れ子になった並列領域も利用可能な最大スレッドで処理するようになります。

新しい機能では、入れ子の並列領域に個別のスレッド数が指定できるようになりました。つまり、上記の 4,2 では、一番外側のOpenMP並列領域は4スレッドで、入れ子になった2番目のレベルのOpenMP並列領域は 2 スレッドで動作します。

これにより、これまで入れ子の並列処理を有効にすると限りなくオーバーサブスクライブ状態になりがちでしたが、すこし緩和できるようになりました。

3:38 AM
2012年4月11日


iSUS編集部 – 菅原

投稿数 206

2

追記です。OpenMP並列領域に入ると、その中ではomp_set_num_threads()を利用してスレッド数を変更することができません。