Форум программистов, компьютерный форум, киберфорум
Процессоры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.10.2020, 19:19
Ответы с готовыми решениями:

Заменил процессор но прироста в производительности не замечаю.
Уважаемые знатоки.Подскажите что делать - установил на материнскую плату GIGABYTE EP41-UD3L процессор Pentium Dual-Core E6700.До этого...

Ограничения базы данных с целью прироста производительности
Могут ли и в каких случаях дать прирост производительность ограничения default, unique, primary key, check, foreign key ?

Расчет прироста с привязкой по дате и учетом дополнительного прироста в выходные
Вконтакте например испльзует фейковую (я так думаю) переменную "нас уже xxxxxxxxxx" которая постоянно увеличивается. Мне поставлена...

18
 Аватар для snake32
3516 / 1699 / 236
Регистрация: 26.02.2009
Сообщений: 8,534
Записей в блоге: 6
06.10.2020, 14:40
Цитата Сообщение от Холодный ползун Посмотреть сообщение
Core i3 с базовой частотой 2 ГГц... за 16 минут 44 секунды
Цитата Сообщение от Холодный ползун Посмотреть сообщение
Второй это Ryzen 7 4800h с базовой частотой 2.9 ГГц... за 5 минут 40 секунд
Во-первых, архитектуры ЦП разные
Во-вторых, базовая частота - не показатель. Посмотрите какая реальная частота в нагрузке (хотя бы через CPU-Z)
В-третьих, профит в 2,95 - это не такой уж и плохой показатель. 4х при одинаковых частотах и архитектурах - это идеальный случай. А в реале...
А какая память на обоих ноутах (тоже через CPU-Z на вкладке Memory можно глянуть)?
https://www.cpuid.com/softwares/cpu-z.html
Цитата Сообщение от Холодный ползун Посмотреть сообщение
в тесте на Intel Xeon Phi, тест сначала шёл в однопоточном режиме и показывал хорошую линейность от числа задействованных физических ядер.
Не пробовали в 1 потоке запускать на ноуте чтобы свою "линейность" посмотреть?
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
 Аватар для snake32
3516 / 1699 / 236
Регистрация: 26.02.2009
Сообщений: 8,534
Записей в блоге: 6
06.10.2020, 17:10
Цитата Сообщение от Холодный ползун Посмотреть сообщение
не могу там устанавливать приложения.
Установка не требуется - там по ссылке есть просто zip-архив, а внутри простые exe-шники (под win32 и win64).
Цитата Сообщение от Холодный ползун Посмотреть сообщение
Как заставить работать 1 ядро на 1 потоке я не знаю.
Через Task Manager на закладке Процессы на запущеном приложении правой кнопкой мыши можно дать доступ не ко всем потокам. Set Affinity рядом с Set Priority.
Хотя обычно в самом приложении есть настройки.
Цитата Сообщение от Холодный ползун Посмотреть сообщение
на рабочем ноутбуке 1990 МГц, на моём 4030 - 4050 МГц
Хм.. чот 6006u совсем не бустит? 15w всё-таки. Видимо специальные AVX инструкции юзает. Раз на такой частоте всего в 3 раза проигрывает... ПО под Intel пилили судя по вашим ссылкам.
Цитата Сообщение от Холодный ползун Посмотреть сообщение
Построю графики и прикреплю сюда на них ссылки или сами файлы.
1
3 / 3 / 0
Регистрация: 17.01.2019
Сообщений: 72
07.10.2020, 05:04  [ТС]
Вчера не успел сделать графики. Пока установил ПО, в котором это делается и пока вспомнил как там работать, было уже поздно. В общем, выложу результаты сегодня вечером, когда приду с работы, если не закроют тему. Поэтому на всякий случай оставляю сообщение, чтобы модератор пока не закрывал тему.
0
Эксперт Hardware
 Аватар для InsomniaNsk
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.
Цитата Сообщение от snake32 Посмотреть сообщение
Хм.. чот 6006u совсем не бустит?
Офисный ноутбук с пассивной системой охлаждения.
Миниатюры
Нелинейность прироста производительности от количества потоков   Нелинейность прироста производительности от количества потоков   Нелинейность прироста производительности от количества потоков  

Нелинейность прироста производительности от количества потоков   Нелинейность прироста производительности от количества потоков  
1
3 / 3 / 0
Регистрация: 17.01.2019
Сообщений: 72
07.10.2020, 23:28  [ТС]
InsomniaNsk, о покупке десктопа задумываюсь, но в первую очередь нужен был ноутбук, так как бывает, что нужно уезжать в командировки или в отпуск, Мой старый ноутбук был уже слабоват.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
08.10.2020, 18:44
Цитата Сообщение от Холодный ползун Посмотреть сообщение
С чем это может быть связано я не знаю.
Если вычисления зависимые, то их не получится нормально распараллелить. Дело в специфике твоей задачи.
0
3 / 3 / 0
Регистрация: 17.01.2019
Сообщений: 72
08.10.2020, 20:08  [ТС]
Quiet Snow, по идее, вычисления практически не зависимые. Просто очень много однотипных задач, которые сами по себе не зависимы. Наверное единственное, место, где они могут пересекаться - это данные о геометрии детектора и базы данных по взаимодействию частиц с материей. На сколько я понимаю, эти данные не дублируются для каждого потока.
0
 Аватар для snake32
3516 / 1699 / 236
Регистрация: 26.02.2009
Сообщений: 8,534
Записей в блоге: 6
09.10.2020, 12:36
Цитата Сообщение от Холодный ползун Посмотреть сообщение
у AMD наблюдается хорошая линейность прироста производительности, но только до 8 потоков
Видимо после 8 потоков ресурсы ЦП заканчиваются. Какие конкретно можно лишь гадать:

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,
Цитата Сообщение от snake32 Посмотреть сообщение
можно проверить высунув одну планку ОЗУ
Может я и попробую разобрать ноут и извлечь память, там вроде она легко извлекается. Хотя мне кажется дело не в ней. Но проверить можно.
Цитата Сообщение от snake32 Посмотреть сообщение
упор в FPU(блоки для работы с плавающей точкой)
Тут бы как-нибудь попробовать отключить несколько(4) физических ядер, тогда если дело в нехватке FPU, то опять на плато выйдет, когда закончатся реальные ядра. Не знаю, можно ли это сделать из под винды. Если получится, может он запомнит это состояние и в линуксе. Ну ещё загляну в биос, может я чего не заметил и можно там отключить.
Вообще удручает, что на 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
Цитата Сообщение от Холодный ползун Посмотреть сообщение
оказался даже чуть меньше, чем в 3 раза, хотя количество ядер отличается в 4 раза, не говоря уже о тактовой частоте
это нормально для абсолютно разных процессоров, вы что хотите выяснить?
сюда же: частота не влияет на производительность и у одинаковых процессоров, потому что процентно разница мала, и кф скалирования от выхода меньше еденицы

Добавлено через 6 минут
не погружаясь в материал, например еще 2 из общеизвестных тезиса:

- хипер мощность на двуядерниках максимальна, если у остальных 25% это уже лучший случай, то у х2 он может даже 1.5 давать, за предел не скажу
- хипер интела с хипером амд не сравнить, то есть они в таком знаке >>
0
3 / 3 / 0
Регистрация: 17.01.2019
Сообщений: 72
23.11.2020, 19:03  [ТС]
Проблему я давно решил, но думаю, что нужно ещё сюда на всякий случай отписаться. Виноват в плохой производительности я сам, ибо создал отладочную сборку джеанта. Когда я это понял и пересобрал в релизе, производительность возросла в несколько раз. Тестировал на одной из задач, скорость возрасла примерно в 7.5 раз.
0
 Аватар для snake32
3516 / 1699 / 236
Регистрация: 26.02.2009
Сообщений: 8,534
Записей в блоге: 6
23.11.2020, 19:51
Цитата Сообщение от Холодный ползун Посмотреть сообщение
Тестировал на одной из задач, скорость возрасла примерно в 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.11.2020, 22:34
Помогаю со студенческими работами здесь

Ограничение количества потоков
Здраствуйте. Допустим есть прокси чекер. Есть тхт файл, в нем 100 прокси. Чекер должен быть многопоточным. Потоки создаются похожим...

Уменьшение количества потоков
Привет всем. Возникла проблема. В программе выставляю количество потоков. Изначально включаются все 50(к примеру) в ходе работы они...

Создание неопределенного количества потоков
Здравствуйте. Подскажите пожалуйста как: 1. Как создать неопределенное количество потоков? Допустим есть текстовый файл. В нем...

Определение максимального количества потоков
Есть ли формула по которой можно определить максимальное количество потоков на процессор ?

Threading. Ограничение количества потоков
Добрый день. Есть некая функция do_stuff(), необходимо выполнять ее в отдельном потоке, но ограничить одновременное выполнение к...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
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. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru