@maryaTurova

Как произвести тест производительности машин на Python?

Имеются 2 машины:
Ryzen-9 5900X - 12 ядер,24 потока Windows 10
Xeon E-5 2699 v3*2 - 36 ядер 72 потока Windows 11 (Выбрал её т.к. нет ограничений на кол-во групп процессоров)
Хотелось бы сделать тест кто круче :))
Вот что я пробовал

from multiprocessing import Pool, cpu_count
from datetime import datetime

def stress_test(args):
    cpu, value = args
    start_time = datetime.now()
    for i in range(value):
        value = value * i
    print(f"cpu: {cpu} time: {datetime.now() - start_time}")

if __name__ == '__main__':
    start_time = datetime.now()
    cpu_count = cpu_count()
    with Pool(cpu_count) as mp_pool:
        mp_pool.map(stress_test, [(cpu, 100000000) for cpu in range(cpu_count)])
    print(f"total: {datetime.now() - start_time}")


С Ryzen все норм.
Но с Xeon ошибка вылетела "ValueError: need at most 63 handles, got a sequence of length 74", по гуглил - понял что это не обойти. Хотя и не понятно почему 74.....потоков же 72.
Каким образом я могу сравнить 2 машины?
  • Вопрос задан
  • 234 просмотра
Пригласить эксперта
Ответы на вопрос 2
Griboks
@Griboks
Используйте готовые бенчмарки либо ровно ту программу, для которой вы проводите тестирование. Каждая программа, каждый алгоритм работает по-своему, поэтому ваши тесты ничего не покажут. Например, некоторые задачи вычисляются векторно, некоторые на одном ядре, некоторые на всех ядрах, некоторые ядра могут находиться в динамической частоте или в режиме экономии энергии, некоторые ядра могут быть виртуальными, некоторые данные могут кэшироваться.
Ответ написан
Комментировать
@maryaTurova Автор вопроса
Т.е нельзя одну и ту же задачу (чтобы задействовала все ядра) запустить на разных машинах и сверить время выполнения? Именно это я и хочу сделать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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