Вперед: 3.5. Контрольные вопросы
Назад: 3.4.2. Подпрограммы синхронизации с использованием механизма замков
К содержанию: Оглавление


3.4.3. Функции для работы с системным таймером

Для разработки эффективных параллельных программ важно знать время выполнения того или иного фрагмента программ или всей программы в целом. Поскольку на каждой вычислительной системе функции таймеров сильно отличаются друг от друга, то OpenMP предлагает свои платформенно-независимые функции.

OMP_GET_WTIME - функция для работы с системным таймером.

C/C++:

#include <omp.h>
double omp_get_wtime(void)

Fortran:

DOUBLE PRECISION FUNCTION OMP_GET_WTIME( )

Функция возвращает в виде переменной двойной точности время в секундах от некоторого фиксированного момента в прошлом. Гарантируется, что за время жизни процесса точка отсчета времени не будет изменена. Для измерения времени выполнения некоторого участка программы его нужно окружить двумя вызовами функции. Следует позаботиться, чтобы эти два измерения проводились внутри одной нити, постольку таймеры разных нитей могут быть не синхронизированы.

OMP_GET_WTICK - функция для измерения разрешения таймера.

C/C++:

#include <omp.h>
double omp_get_wtick(void)

Fortran:

DOUBLE PRECISION FUNCTION OMP_GET_WTICK( )

Функция возвращает в виде переменной двойной точности разрешение таймера в секундах.

Приведем пример использования функций для работы с системным таймером.

Программа wtime.c

#include <stdio.h>
#include <omp.h>
int main() {
  double start = omp_get_wtime( );
  sleep(1);
  double end = omp_get_wtime( );
  double wtick = omp_get_wtick( );

  printf("Time execution = %.16g\n", end - start);

  printf("wtick = %.16g\n", wtick);
}

Программа wtime.f

   program wtime
   include "omp_lib.h"
   double precision start_time, end_time, tick, time
   start_time = omp_get_wtime()
   tick=sleep(1)
   end_time = omp_get_wtime()
   time = end_time - start_time
   tick = omp_get_wtick()
   print *, "Time execution = ", time
   print *, "Wtick = ", tick
   end



Вперед: 3.5. Контрольные вопросы
Назад: 3.4.2. Подпрограммы синхронизации с использованием механизма замков
К содержанию: Оглавление