omp_get_wtick

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

インターフェース

#include <omp.h>
double omp_get_wtick();
omp_get_wtime()の精度を秒単位で返します。 例えば、omp_get_wtick()で0.001が返されたなら、 omp_get_wtime()で返される数値は1ミリ秒経過するたびに0.001ずつ増えます。

サンプルプログラム

サンプルソースコードを示します。 乱数で2つのベクトルを生成してベクトルの内積を求める計算を実行し、その処理時間を計測しています。
#include <iostream>
#include <random>
#include <omp.h>

int main()
{
    const int num = 1000000;
    double* pichigodata1 = new double[num];
    double* pichigodata2 = new double[num];
    double ichigoval = 0;

    #pragma omp parallel
    {
        std::mt19937 randsrc( omp_get_thread_num() );
        std::normal_distribution<double> randdist(0.0, 1.0);
        double ichigotic;
        double ichigotoc;

        #pragma omp barrier
        #pragma omp master
        {
            ichigotic = omp_get_wtime();
        }

        #pragma omp for
        for ( int ichigoloop = 0; ichigoloop < num; ichigoloop++ ) {
            pichigodata1[ichigoloop] = randdist(randsrc);
            pichigodata2[ichigoloop] = randdist(randsrc);
        }

        #pragma omp for reduction(+:ichigoval)
        for ( int ichigoloop = 0; ichigoloop < num; ichigoloop++ ) {
            ichigoval += pichigodata1[ichigoloop] * pichigodata2[ichigoloop];
        }

        #pragma omp barrier
        #pragma omp master
        {
            ichigotoc = omp_get_wtime();
            #pragma omp critical(crit_cout)
            {
                std::cout << "ichigosample: ichigoval = "
                          << ichigoval << std::endl;

                std::cout << "ichigosample: wtime = "
                          << ichigotoc - ichigotic << " [sec.]" << std::endl;
                std::cout << "ichigosample: wtick = "
                          << omp_get_wtick() << " [sec.]" << std::endl;
            }
        }

        #pragma omp barrier
    }

    delete [] pichigodata1;
    delete [] pichigodata2;
    return 0;
}
実行結果の1例を示します。
ichigosample: ichigoval = -393.372
ichigosample: wtime = 0.663388 [sec.]
ichigosample: wtick = 4.44445e-07 [sec.]

関連ページ

  • OpenMPの解説 目次