Использование функции omp_get_wtime() с компиляторами xlc/xlC

К сожалению, в файле omp.h, отвечающем версии компиляторов xlc/xlC, установленных в настоящее время на вычислительной системе Regatta, по непонятным причинам отсутствует прототип функции omp_get_wtime() (в этом легко убедиться, изучив файл /usr/include/omp.h). Но в то же время реализация данной функции имеется в системных библиотеках.

Чтобы использовать данную функцию в программах на C/C++ программисту необходимо явным образом указывать прототип функции непосредственно в коде своей программы.

Для языка C это выглядит следующим образом:

double omp_get_wtime(void);

Для языка C++ нужно написать вот так:

extern "C" double omp_get_wtime(void);

Пример простейшей C-программы, демонстрирующей использование функции omp_get_wtime(), приведен ниже:

/*
 * Compile as
 * xlc -qsmp=omp FILENAME.c
 */

#include <stdio.h>
#include <omp.h>
#include <unistd.h>

double omp_get_wtime(void);

int main()
{
    double t1, t2;

    t1 = omp_get_wtime();
    sleep(2);   /* Sleep for 2 seconds */
    t2 = omp_get_wtime();
    printf("%e\n", t2-t1);

    return 0;
}

Видимо, в файле omp.h отсутствует заголовок этой функции, потому что на Regatta до сих пор стоит OpenMP 1.0 - стандарт десятилетней давности, в котором такой функции не было.