Я удивлен, что вы увидели какой-либо успех с программой, как указано выше. Если вы посмотрите на справочную страницу RedHat Linux для clock (), вы увидите, что она «возвращает приблизительное время процессора, используемое программой». Добавление директив OpenMP приводит к дополнительным издержкам, и, следовательно, вы должны видеть больше общего процессорного времени, используемого при запуске OpenMP. То, на что вам нужно обратить внимание - это время истечения (или время настенных часов). Когда вы работаете параллельно (и у вас есть программа, которая может извлечь выгоду из параллели), вы увидите, что время истечения уменьшается. Спецификация OpenMP определяет подпрограмму (omp_get_wtime ()) для предоставления этой информации.
Изменение программы для создания отчетов с помощью clock () и omp_get_wtime ():
$ a.out 1000000 (1,000,000)
2 процессора:
часы (): 0,23 времени (): 0,23 часа (): 0,96 времени (): 0,16 часов (): 0,59 времени (): 0,09
4 процессора:
часы (): 0,24 времени (): 0,24 часа (): 0,97 времени (): 0,16 часов (): 0,57 времени (): 0,09
8 процессоров:
Часы (): 0,24 Вт (): 0,24 Часы (): 2,60 Вт (): 0,26 Часы (): 0,64 Вт (): 0,09
$ a.out 10000000 (10 000 000)
2 процессора:
Часы (): 6,07 Вт (): 6,07 Часы (): 10,4 Вт (): 1,78 Часы (): 11,3 Вт (): 1,65
4 процессора:
Часы (): 6,07 Вт (): 6,07 Часы (): 11,5 Вт (): 1,71 Часы (): 10,7 Вт (): 1,72
8 процессоров:
Часы (): 6,07 Вт (): 6,07 Часы (): 9,92 Вт (): 1,83 Часы (): 11,9 Вт (): 1,86