Я написал программу на 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. Я знаю, что каждый увеличенный поток имеет накладные расходы, так почему же производительность все еще увеличивается?
Кто-нибудь, пожалуйста, объясните мне это подробно.