|
3 / 3 / 0
Регистрация: 17.01.2019
Сообщений: 72
|
|
Нелинейность прироста производительности от количества потоков05.10.2020, 19:19. Показов 1902. Ответов 18
С чем может быть связан малый прирост производительности от увеличения числа потоков?
Ситуация такая. Работаю в Geant4 - это такой пакет для моделирования взаимодействия элементарных частиц с веществом, разработанный в CERN. Весь код в нём открыт, находится в свободном доступе. Грубо говоря, это набор библиотек, написанных на языке C++. Geant4 поддерживает мультитрейдинг. В общем, запускал я ради теста одну и ту же задачу на слабом ноутбуке и на сильном. Вычисления ведутся на процессоре. Я не помню точно что за процессор на слабом ноутбуке, сейчас его нет под рукой, но это довольно новый Core i3 с базовой частотой 2 ГГц и L3 кэш 3 или 4 Мб, 2 физических и 4 физических ядер. Второй это Ryzen 7 4800h с базовой частотой 2.9 ГГц, и 8 Мб L3 кэша, 8 физических и 16 физических ядер. В общем, первый справился с задачей за 16 минут 44 секунды, а второй всего лишь за 5 минут 40 секунд. То есть прирост оказался даже чуть меньше, чем в 3 раза, хотя количество ядер отличается в 4 раза, не говоря уже о тактовой частоте. Та же задача на сильном ноутбуке, запущенная на 4 потоках посчиталась за 12 минут 30 секунд. У меня возникает вопрос из-за чего прирост производительности оказался таким слабым? Я ожидал прирост минимум в 4 раза, так как на сильном ноутбуке ещё и тактовая частота выше. Может ли быть проблема в нехватке L3 кэша? Или это плохая оптимизация под много поточность? Или вовсе другая причина? Хотя вроде они заявляют о хорошей линейности, на сколько я понял: https://twiki.cern.ch/twiki/bi... gTaskForce https://indico.cern.ch/event/7... eading.pdf Хотя, как я понял, в тесте на Intel Xeon Phi, тест сначала шёл в однопоточном режиме и показывал хорошую линейность от числа задействованных физических ядер. Но в моём случае в обоих случая задействовано максимальное число потоков. Если я допустил ошибки или не туда написал, подскажите где ошибки или в какой раздел нужно писать.
0
|
|
| 05.10.2020, 19:19 | |
|
Ответы с готовыми решениями:
18
Заменил процессор но прироста в производительности не замечаю. Ограничения базы данных с целью прироста производительности Расчет прироста с привязкой по дате и учетом дополнительного прироста в выходные |
|
|
||||
| 06.10.2020, 14:40 | ||||
|
Во-вторых, базовая частота - не показатель. Посмотрите какая реальная частота в нагрузке (хотя бы через CPU-Z) В-третьих, профит в 2,95 - это не такой уж и плохой показатель. 4х при одинаковых частотах и архитектурах - это идеальный случай. А в реале... А какая память на обоих ноутах (тоже через CPU-Z на вкладке Memory можно глянуть)? https://www.cpuid.com/softwares/cpu-z.html
2
|
||||
|
3 / 3 / 0
Регистрация: 17.01.2019
Сообщений: 72
|
|
| 06.10.2020, 16:35 [ТС] | |
|
snake32, слабый ноутбук стоит у меня на работе, не могу там устанавливать приложения.
Но я сегодня в конце дня немного уточнил информацию по нему. Процессор в нём core i3 6006u, про оперативную память могу сказать, что её объём 8 Гб, его хватает с избытком, если память не течёт. Стоит она одной планкой или двумя я не обратил внимание, а работает на частоте 2400 МГц. На процессорах реальная частота в нагрузке на рабочем ноутбуке 1990 МГц, на моём 4030 - 4050 МГц, при работе на всех потоках. В простое на слабом около 1 ГГц, на моём около 2 ГГц. У меня температура до 80 градусов не доходит. Оперативная память у меня стоит 2 планками по 8 Гб DDR4 3200 МГц. Ещё я в конце дня прогнал на рабочем ноутбуке одну задачу на 1, 2, 3 и 4 потоках. Сейчас хочу это повторить на своём ноутбуке. Построю графики и прикреплю сюда на них ссылки или сами файлы. Как заставить работать 1 ядро на 1 потоке я не знаю. В биосе такой опции кажется нет. Может быть потом ещё спрошу на форуме CERN.
0
|
|
|
|
|||||
| 06.10.2020, 17:10 | |||||
|
Хотя обычно в самом приложении есть настройки.
1
|
|||||
|
3 / 3 / 0
Регистрация: 17.01.2019
Сообщений: 72
|
|
| 07.10.2020, 05:04 [ТС] | |
|
Вчера не успел сделать графики. Пока установил ПО, в котором это делается и пока вспомнил как там работать, было уже поздно. В общем, выложу результаты сегодня вечером, когда приду с работы, если не закроют тему. Поэтому на всякий случай оставляю сообщение, чтобы модератор пока не закрывал тему.
0
|
|
|
6266 / 3703 / 313
Регистрация: 13.02.2014
Сообщений: 13,670
|
|
| 07.10.2020, 10:14 | |
|
Холодный ползун, если требуется высокая производительность в многопотоке - это точно не к ноутбукам.
2
|
|
|
3 / 3 / 0
Регистрация: 17.01.2019
Сообщений: 72
|
||
| 07.10.2020, 23:18 [ТС] | ||
|
snake32, сделал два теста и построил к ним графики. Второй тест был на той же задаче, по которой я изначально сравнивал производительность, и с корой начиналось обсуждение, только я её в 4 раза сократил по времени. Первый тест всё в том же Geant4, только другая задача. Ещё предоставил скрины с загрузкой ЦП на 1 потоке, на 2, на 8 и на 16 для первого теста. Geant4 лучше всего приспособлен под линукс, поэтому приходится работать в линуксе, и поэтому вместо CPU-Z использую CPU-X и GKrellM.
Сразу можно отметить, что процессор от AMD в 1 потоке сильно проигрывает процессору Intel, несмотря на то, что работает на более высоких частотах и на то, что сам более современный. Но у AMD наблюдается хорошая линейность прироста производительности, но только до 8 потоков, потом практически выходит на плато, хотя CPU-X и GKrellM на 8 потоках сообщают о 50% загрузке, а на 16 о 100%. Ещё наблюдается непонятный спад при переходе с 8 на 9 потоков. Может быть это просто статистическая флуктуация, но наблюдается в обоих случаях. У Intel выход на плато происходит плавнее. В общем, во втором тесте мой ноутбук в 16 потоков на более высоких частотах даёт прирост производительности примерно в 3 раза, а в первом менее чем в 2 раза. Проигрывает в однопоточном режиме. С чем это может быть связано я не знаю. Может быть дело в компиляторе? Или, действительно, плохой оптимизации под AMD? Или в самих процессорах от AMD? Ещё уточню, что на работе стоит более старая версия Geant4. Может быть стоит попробовать поставить себе такую же и протестировать, хотя не думаю, что что-то изменится. Ещё уточню информацию . В рабочем ноутбуке оперативная память DDR4 стоит одной планкой. Также на работе установлен Linux Mint Cinnamon на виртуальной машине от VMware, но это, кажется, почти не влияет на производительность. У меня установлена Fedora 32.
1
|
||
|
3 / 3 / 0
Регистрация: 17.01.2019
Сообщений: 72
|
|
| 07.10.2020, 23:28 [ТС] | |
|
InsomniaNsk, о покупке десктопа задумываюсь, но в первую очередь нужен был ноутбук, так как бывает, что нужно уезжать в командировки или в отпуск, Мой старый ноутбук был уже слабоват.
0
|
|
|
Кормпилятор
|
||
| 08.10.2020, 18:44 | ||
|
0
|
||
|
3 / 3 / 0
Регистрация: 17.01.2019
Сообщений: 72
|
|
| 08.10.2020, 20:08 [ТС] | |
|
Quiet Snow, по идее, вычисления практически не зависимые. Просто очень много однотипных задач, которые сами по себе не зависимы. Наверное единственное, место, где они могут пересекаться - это данные о геометрии детектора и базы данных по взаимодействию частиц с материей. На сколько я понимаю, эти данные не дублируются для каждого потока.
0
|
|
|
|
||
| 09.10.2020, 12:36 | ||
|
1) упор в память, можно проверить высунув одну планку ОЗУ. Тогда пропускная способность памяти упадёт в 2 раза(с 6400 до 3200) и если упор после 8 потоков был в неё. Плато графика начнётся гораздо раньше. К сожалению, как программно отключить одну планку памяти я не знаю. А разбирать ради этого новый ноут я бы сам наверное не стал, хотя.... 2) упор в FPU(блоки для работы с плавающей точкой). Тут даже не знаю как это проверить/исключить. Логично предположить что если физических ядер 8 то и блоков FPU тоже 8. Поэтому и плато начинается с 8 потоков. У AMD есть специальный компилятор под Linux С++. На сколько он эффективен - я не знаю. Сам под Linux ни разу не писал код. https://developer.amd.com/amd-aocc/
1
|
||
|
Форумчанин
5959 / 4193 / 406
Регистрация: 28.12.2013
Сообщений: 24,134
|
|
| 09.10.2020, 15:47 | |
|
snake32, так линупс торвальдс же фапает на АМД уже, скоро и конпеляторы и чё хош будет
0
|
|
|
3 / 3 / 0
Регистрация: 17.01.2019
Сообщений: 72
|
|||
| 09.10.2020, 17:32 [ТС] | |||
|
snake32,
Вообще удручает, что на 1 ядре у моего производительность хуже, при вдвое более высокой частоте. Меня это смущает больше, чем выход на плато. Почитал немножко форум, тут у ребят схожие проблемы. Если вдруг интересно вот пара ссылок, там не много читать: https://geant4-forum.web.cern.... tions/1771 https://geant4-forum.web.cern.... or-g4/3462 Один утверждает, что с виртуальной машины у него быстрее работает. Очень странно.
1
|
|||
|
3 / 3 / 0
Регистрация: 17.01.2019
Сообщений: 72
|
|
| 14.10.2020, 17:40 [ТС] | |
|
snake32, поставил на рабочий ноутбук AIDA64, но только не новую версию, а ту, которую дали. Дома такую же точно скачать не удалось, но скачал близкую к ней, надеюсь, тесты там одинаковые.
Уже провёл и сравнил все тесты процессора на 1 ядро. Мой процессор выдаёт результаты как минимум процентов на 60 лучше, а в остальных справляется ещё лучше. Тесты на чтение из памяти, запись и копирование показывают примерно трёхкратное превосходство. Только задержка у меня дольше и иногда её значение меняется. 80 - 100 нс против 73 нс на рабочем ноутбуке. И, соответственно, тайминги памяти у меня выше. Я думаю, может ли это быть причиной проигрыша в производительности на 1 ядро при вычислении задач, о которых я писал выше? Также я проверил как быстро оба ноутбука справляются с компилированием одного и того же проекта в однопоточном режиме - мой опять проиграл. Проверил предположение о том, что на виртуальной машине всё будет работать быстрее. Конечно, всё работает медленнее, по крайней мере у меня. Пока ещё не разобрался с оптимизирующим компилятором от AMD, может он исправит ситуацию. В следующий раз наверное уже создам новую тему, если возникнут новые вопросы.
0
|
|
|
2 / 2 / 0
Регистрация: 04.02.2013
Сообщений: 47
|
||
| 15.10.2020, 14:43 | ||
|
сюда же: частота не влияет на производительность и у одинаковых процессоров, потому что процентно разница мала, и кф скалирования от выхода меньше еденицы Добавлено через 6 минут не погружаясь в материал, например еще 2 из общеизвестных тезиса: - хипер мощность на двуядерниках максимальна, если у остальных 25% это уже лучший случай, то у х2 он может даже 1.5 давать, за предел не скажу - хипер интела с хипером амд не сравнить, то есть они в таком знаке >>
0
|
||
|
3 / 3 / 0
Регистрация: 17.01.2019
Сообщений: 72
|
|
| 23.11.2020, 19:03 [ТС] | |
|
Проблему я давно решил, но думаю, что нужно ещё сюда на всякий случай отписаться. Виноват в плохой производительности я сам, ибо создал отладочную сборку джеанта. Когда я это понял и пересобрал в релизе, производительность возросла в несколько раз. Тестировал на одной из задач, скорость возрасла примерно в 7.5 раз.
0
|
|
|
3 / 3 / 0
Регистрация: 17.01.2019
Сообщений: 72
|
|
| 23.11.2020, 21:16 [ТС] | |
|
snake32, профит относительно скорости вычислений на моём же компьютере, когда джеант был собран в отладочной версии. Что в 1 потоке, что в 16 на первой задаче, о которой писал выше, где графики, скорость выполнения возросла в 7 - 8 раз. Я сначала тоже не поверил, думал, что меньшее число процессов задал смоделировать, но вроде всё верно. Я, конечно, не ожидал, что производительность в 1 потоке на моём ноутбуке превысит производительность рабочего ноутбука в 4 потоках, но с другой стороны рабочий ноутбук работает на частотах не выше 2 ГГц, расчёты ведёт на виртуальной машине, но и сам процессор менее современный. Может на выходных графики для наглядности прикреплю и за одно проверю соблюдены ли те же условия. Но то, что скорость возросла видно даже на глаз.
1
|
|
|
Дно пробито
4863 / 3006 / 393
Регистрация: 07.10.2020
Сообщений: 20,468
|
|
| 26.11.2020, 22:34 | |
|
А вот почему к примеру тогда гипертрейдинг на последнем пне и на девятке разное качество имеют в процентах относительно производительности самого ядра ?
0
|
|
| 26.11.2020, 22:34 | |
|
Помогаю со студенческими работами здесь
19
Ограничение количества потоков Уменьшение количества потоков Создание неопределенного количества потоков Определение максимального количества потоков Threading. Ограничение количества потоков Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2.
Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники".
В. . .
|
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии.
. . .
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3.
Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
|