Я запускаю код .cpp (i) в последовательном стиле и (ii) с использованием операторов OpenMP. Я пытаюсь увидеть разницу во времени. Для расчета времени я использую следующее:
#include <time.h>
.....
main()
{
clock_t start, finish;
start = clock();
.
.
.
finish = clock();
processing time = (double(finish-start)/CLOCKS_PER_SEC);
}
Время довольно точное при последовательном (выше) выполнении кода. Для запуска требуется около 8 секунд. Когда я вставляю операторы OpenMP в код и после этого вычисляю время, я получаю сокращение времени, но отображаемое время составляет около 8-9 секунд на консоли, тогда как на самом деле это всего 3-4 секунды в реальном времени!
Вот как мой код выглядит абстрактно:
#include <time.h>
.....
main()
{
clock_t start, finish;
start = clock();
.
.
#pragma omp parallel for
for( ... )
for( ... )
for (...)
{
...;
}
.
.
finish = clock();
processing time = (double(finish-start)/CLOCKS_PER_SEC);
}
Когда я запускаю приведенный выше код, я получаю сокращение времени, но отображаемое время не является точным с точки зрения реального времени. Мне кажется, что функция clock() вычисляет индивидуальное время каждого потока, суммирует их и отображает.
Может ли кто-нибудь объяснить причину этого или предложить мне какую-либо другую функцию измерения времени для измерения времени в программах OpenMP?
Спасибо.