2014年4月4日金曜日

OpenMPで時間を計測したメモ

OpenMPを使いはじめた。
時間計測プログラムをメモ。
https://stackoverflow.com/questions/10874214/measure-execution-time-in-c-openmp-code

time.hのclock()はCPUの費やした時間をかえすのでこの場合は適していないらしい。
そんなときはomp_get_wtime()を使う。戻り値は秒。

#include <iostream>
#include <omp.h>
#include <time.h>

using namespace std;

int hoge(int x, int y)
{
    return x + y;
}

int main()
{
    double start, end;
    clock_t t_start, t_end;
    long N = 100000000;    
    t_start = clock();
#ifdef _OPENMP
    start = omp_get_wtime();
    #pragma omp parallel for
    for(int i = 0; i < N; i++) {
        hoge(1,1);
    }   
    end = omp_get_wtime();
    cout << end - start << endl;
#else
    for(int i = 0; i < N; i++) {
        hoge(1,1);
    }   
 
#endif
    t_end = clock();
    cout << (double(t_end - t_start)/CLOCKS_PER_SEC) << endl;
    return 0;
}


0 件のコメント:

コメントを投稿