Говорят, у i5 7500T 4 ядра (в данном случае 4 потока). Когда я, например, вычисляю 1-миллионное число Фибоначчи (только один поток, каждое число зависит от своего предшественника), используя Python, это занимает 5,5 секунд. Когда я запускаю 2 из этих процессов одновременно, они оба занимают 6,3 секунды, а когда я запускаю 3 или 4, это занимает еще больше времени (10+ секунд на процесс).

Как это можно назвать «многоядерным»? Когда я использую большой сервер с несколькими ядрами, от 1 до n процессов, когда n <количество ядер, занимают одинаковое количество времени с разными n .

1 ответ1

1

Каждое ядро работает индивидуально быстро, но все они нуждаются в доступе к общим ресурсам, таким как кеши и память. В результате многоядерная работа увеличивает объем работы, которую вы можете выполнять, но также может стать причиной узких мест.

Ваши математические вычисления, вероятно, очень ограничены в памяти, и вы достигаете предела пропускной способности вашей памяти.

То, что на одном ядре требуется 5,5 секунды, но использование двух ядер занимает 6,3 секунды, означает, что вы выполнили вдвое больше работы всего за 0,8 секунды дольше, чем 5,5 секунды дольше (всего 11 секунд), которые выполнялись бы поочередно. Вы эффективно сэкономили 4,7 секунды реального времени (11 - 6,3), выполняя работу бок о бок, а не одну за другой.

Многоядерность не означает, что вы можете отлично выполнять вдвое больше работы за одно и то же время, но это означает, что вы можете достичь значительного количества больше, чем вы могли бы достичь только с одним ядром.

Если теперь для всех процессов требуется 10 секунд, чтобы завершить работу при использовании всех 4 ядер, то это все равно завершится быстрее, чем если бы вы выполняли работу четыре раза на одном ядре, где это должно было занять 22 секунды. Вы выполняете работу в четыре раза быстрее, чем вдвое.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .