Оцениваем ядра CPU для оптимизации - страница 27

 
Pavel Malyshko #:



у Эпика 280 ватт TDP .... у него 64 ядра но по бенчмарку он в 2.5 раза мощнее..а не в 4.. чем  5950x


Ну по моим "сферическим" тестам выше:

Ядро R9 мощнее EPYC в 1.41 раз, значит 16 ядер R9 это 22.56 ядер EPYC, значит он мощнее в 2.83 раза.

Но у EPYC 8-канальный контролер, у  R9 - 4 канальный, т.е. теоретически, в задачах, где важна память он не особо будет отставать.

 
Dmitriy Shal #:

SMT у R9 и у EPYC это другая технология, не HT, у EPYC 7003 я так понял более продвинутая чем у R9, но нужно тесты делать.

Т.е. 16 агентов грузят R9 на 100% все 32 логических ядра, когда включен SMT. Как у новых Интелов я не знаю, раньше да, как вы и описывали, 1 агент в Hyper-Threading грузил бы физический процессор на 50%.

У меня нет новых технологий, сейчас самое новое это процессоры на 2011v3. SMT и HT сделаны для одинакового вроде как, не понимаю всё равно логику загруки - получается, что намеренно держит как бы "дверь открытой" поедая энергию в ожидании задания. Ну да ладно.

 
Dmitriy Shal #:


Но у EPYC 8-канальный контролер, у  R9 - 4 канальный, т.е. теоретически, в задачах, где важна память он не особо будет отставать.

Думаю можно посчитать сколько тактов там приходится на один поток/ядро. Явно же меньше и не в один раз.

 
Aleksey Vyazmikin #:

У меня нет новых технологий, сейчас самое новое это процессоры на 2011v3. SMT и HT сделаны для одинакового вроде как, не понимаю всё равно логику загруки - получается, что намеренно держит как бы "дверь открытой" поедая энергию в ожидании задания. Ну да ладно.

У меня есть старый i7 3820 4 ядер 8 потоков с НТ. Если я запущу на нем 4 агента, то загрузка процессора будет 50%.

Hyper-Threading - временная многопоточность,
SMT -  одновременная многопоточность. Я даже схему ее видел на сайте АМД, она сложнее.

Вот есть пример на русском:

«Hyper-Threading»

Тут всё просто, представим, что у нас есть один конвейер и один рабочий (Ядро ЦП), который выполняет операции над числами и записывает результат. Предположим, для этих операций ему нужна отвёртка и гаечный ключ. Операционная система (ОС) складывает нашему рабочему на конвейер по порядку одну операцию для отвёртки, а за ней одну операцию для гаечного ключа. Один рабочий в один момент времени может оперировать или только гаечным ключом или только отвёрткой. Таким образом, выкладывая разное количество разных блоков, ОС определяет приоритет выполнения тех или иных операций от разных приложений. Пропорцию одних блоков к другим мы можем указывать внутри ОС, когда указываем приоритет процесса. Именно это и делают все диспетчеры задач в т.ч. и «Windows Performance Station». Это приоритизирование распространяется далее на механизмы SMT и всю работу с конвейерами.


С появлением SMT ситуация становится чуть сложнее.

Представим конвейер и двух рабочих, у которых есть одна отвёртка и один гаечный ключ на двоих. При этом, каждый из них может оперировать либо только отвёрткой, либо только гаечным ключом. Один конвейер условно делится на две половинки вдоль. SMT позволяет сложить на такой конвейер сразу два числа, одно для работы с отвёрткой, а второе для работы с гаечным ключом, поэтому действия этих рабочих выглядят так: первый рабочий получает операцию для отвёртки, а второй, стоящий напротив, в тот же момент времени, операцию для гаечного ключа.

 
Dmitriy Shal #:

У меня есть старый i7 3820 4 ядер 8 потоков с НТ. Если я запущу на нем 4 агента, то загрузка процессора будет 50%.

Hyper-Threading - временная многопоточность,
SMT -  одновременная многопоточность. Я даже схему ее видел на сайте АМД, она сложнее.

Вот есть пример на русском:

«Hyper-Threading»

Тут всё просто, представим, что у нас есть один конвейер и один рабочий (Ядро ЦП), который выполняет операции над числами и записывает результат. Предположим, для этих операций ему нужна отвёртка и гаечный ключ. Операционная система (ОС) складывает нашему рабочему на конвейер по порядку одну операцию для отвёртки, а за ней одну операцию для гаечного ключа. Один рабочий в один момент времени может оперировать или только гаечным ключом или только отвёрткой. Таким образом, выкладывая разное количество разных блоков, ОС определяет приоритет выполнения тех или иных операций от разных приложений. Пропорцию одних блоков к другим мы можем указывать внутри ОС, когда указываем приоритет процесса. Именно это и делают все диспетчеры задач в т.ч. и «Windows Performance Station». Это приоритизирование распространяется далее на механизмы SMT и всю работу с конвейерами.


С появлением SMT ситуация становится чуть сложнее.

Представим конвейер и двух рабочих, у которых есть одна отвёртка и один гаечный ключ на двоих. При этом, каждый из них может оперировать либо только отвёрткой, либо только гаечным ключом. Один конвейер условно делится на две половинки вдоль. SMT позволяет сложить на такой конвейер сразу два числа, одно для работы с отвёрткой, а второе для работы с гаечным ключом, поэтому действия этих рабочих выглядят так: первый рабочий получает операцию для отвёртки, а второй, стоящий напротив, в тот же момент времени, операцию для гаечного ключа.

Ну не знаю, я слышал о другом понятии HT - что как раз он позволяет использовать конвеер для разных задач, пока решается одна берется другая для другого кода программы. Может все перепуталось в памяти...

Но не суть, получается, что SMT не то в работу дает - технология плохо работает с MT5 или оптимизация подачи нужных запчастей у MT5 хорошая, что второй рабочий просто простаивает в основном... эх этим метафоры...

 
Aleksey Vyazmikin #:

У меня нет новых технологий, сейчас самое новое это процессоры на 2011v3. SMT и HT сделаны для одинакового вроде как, не понимаю всё равно логику загруки - получается, что намеренно держит как бы "дверь открытой" поедая энергию в ожидании задания. Ну да ладно.

Перепроверил еще раз, я ввел вас в заблуждение - 16 агентов грузят R9 при SMT (32 потока) на 64-65%, что все равно выше 50%. 
И я думаю, что если выключить SMT, то прирост будет небольшой, сейчас не могу попробовать.


 
Dmitriy Shal #:

Перепроверил еще раз, я ввел вас в заблуждение - 16 агентов грузят R9 при SMT (32 потока) на 64-65%, что все равно выше 50%. 
И я думаю, что если выключить SMT, то прирост будет небольшой, сейчас не могу попробовать.


А на  EPYC тогда получается 70%? Всё равно многовато, может тут дело в распределении как раз заданий (выполняется разными потоками например) - надо попробовать агента привязать капитально к конкретному ядру.

 
А вот EPYC 128 агентов грузят его логические процессоры 256 штук под 90-95%
Хотя там расколбас такой идет, прыгает от 85 до 100, в среднем думаю 90%


 


Так наглядней, это 128 агентов на 256 потоках, но запускал на горячий терминал уже.

Ладно, спать пора, хватит технику мучать))))

 
Dmitriy Shal #:
А вот EPYC 128 агентов грузят его логические процессоры 256 штук под 90-95%
Хотя там расколбас такой идет, прыгает от 85 до 100, в среднем думаю 90%


интересно было бы посмотреть сколько оперативки сожрёт по каждому тику если оптимизировать)...

у меня на 32 потоках.. бывает сьедает 128 гб оперативной памяти оптимизируя по каждому тику..