Реальные ядра или темы в i5 7500T?

343
Niels

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

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

0
Если вы используете рекурсивный алгоритм, попробуйте переключиться на итеративный алгоритм, так как он должен быть намного более эффективным в этом сценарии и лучше масштабироваться. James P 6 лет назад 0
Просто используя это: def fib (n): a, b = 1,1 для i в диапазоне (n-1): a, b = b, a + b возвращает отпечаток (fib (1000000)) Niels 6 лет назад 0

1 ответ на вопрос

1
Mokubai

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

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

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

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

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

Многопоточность - это случай [убывающих возвратов] (https://en.wikipedia.org/wiki/Diminishing_returns). harrymc 6 лет назад 0
Все еще задаюсь вопросом, почему в некоторых системах требуется одинаковое количество времени на процесс при их одновременном запуске ... Niels 6 лет назад 0
Поскольку эти системы имеют процессоры более высокого класса и двух-, трех- или даже четырехканальную память, которая имеет значительно увеличенную пропускную способность памяти, это будет основным предположением. Не зная, что такое другие системы, мы можем только догадываться. Mokubai 6 лет назад 0

Похожие вопросы