Производительность параллельного программирования OpenMP на C

Я написал программу на C для вычисления Pi с использованием OpenMP, получив помощь из книги. Я считаю, что производительность этой программы будет зависеть от используемых процессоров.

В моем случае Я использовал переменную среды , чтобы проверить производительность параллелизма, увеличив количество процессоров или потоков (я не уверен, что правильно ... поправьте меня)

OMP_NUM_THREADS

У меня четырехъядерный процессор, поэтому я использовал (где no_of_threads изменено с 1 на 10):

$ export OMP_NUM_THREADS=no_of_threads

производительность при запуске программы:

1 --- 0m11.036s

2 --- 0m5. 554 с

3 --- 0 м3,800 с

4 --- 0 м3,166 с

5 --- 0 м3,376 с

8 --- 0 м3,042 с

10 --- 0 м2. 960s

15 --- 0m2.957s

Я могу понять увеличение производительности до 4, поскольку в системе 4 процессора. Но я не могу понять увеличение производительности даже после того, как число потоков превышает 4. Я знаю, что каждый увеличенный поток имеет накладные расходы, так почему же производительность все еще увеличивается?

Кто-нибудь, пожалуйста, объясните мне это подробно.

5
задан malat 29 January 2015 в 15:57
поделиться