Я написал C-программу для Pi
вычислений, используя OpenMP, получая помощь из книги. Я считаю, что производительность этой программы будет зависеть от используемых процессоров.
В моем случае я использовал переменную окружения , чтобы проверить производительность параллелизма, увеличив число процессоров или потоков (я не уверен, что правильно ... пожалуйста, исправьте меня)
OMP_NUM_THREADS
У меня четырехъядерный процессор, поэтому я использовал (где no_of_threads
изменяется с 1 на 10):
$ export OMP_NUM_THREADS=no_of_threads
производительность при запуске программы:
1 --- 0m11.036s
2 --- 0m5,554s
3 --- 0 м3 800 с
4 --- 0m3.166s
5 --- 0m3.376s
8 --- 0m3.042s
10 --- 0m2.960s
15 --- 0m2,957s
Я могу понять увеличение производительности до 4, так как в системе 4 процессора. Но я не могу понять увеличение производительности даже после того, как число потоков превышает 4. Я знаю, что каждый увеличенный поток имеет накладные расходы, так почему производительность все еще увеличивается ..
Может кто-нибудь, пожалуйста, объясните мне это подробно.