インターフェース
#include <omp.h>
int omp_get_max_threads();
parallel指定された場合に並列実行されるスレッド数の最大値を返します。
omp_set_num_threads()やnum_threads()を使わない限り、
omp_get_num_threads()で返される値はこの最大値以下になります。
サンプルプログラム
サンプルソースコードを示します。
#include <iostream>
#include <omp.h>
int main()
{
std::cout << "ichigosample: max. threads = "
<< omp_get_max_threads() << std::endl;
#pragma omp parallel
{
#pragma omp master
{
#pragma omp critical(crit_cout)
{
std::cout << "ichigosample: num. threads = "
<< omp_get_num_threads() << std::endl;
}
}
#pragma omp barrier
}
omp_set_num_threads( omp_get_max_threads() + 1 );
std::cout << "ichigosample: max. threads = "
<< omp_get_max_threads() << std::endl;
#pragma omp parallel
{
#pragma omp master
{
#pragma omp critical(crit_cout)
{
std::cout << "ichigosample: num. threads = "
<< omp_get_num_threads() << std::endl;
}
}
#pragma omp barrier
}
return 0;
}
実行結果の1例を示します。
ichigosample: max. threads = 4
ichigosample: num. threads = 4
ichigosample: max. threads = 5
ichigosample: num. threads = 5
関連ページ
OpenMPの解説 目次