omp_get_max_threads

いちごパック > OpenMPの解説 > omp_get_max_threads

インターフェース

#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の解説 目次