Какова ожидаемая скорость использования распараллеливания в C ++ (не OpenMp, а <thread>) - PullRequest
0 голосов
/ 20 октября 2018

Каково ожидаемое теоретическое ускорение использования распараллеливания в C ++?

Например, скажем, у меня есть 2 ядра и 4 логических процессора.Если я использую полностью оптимизированную параллельную программу для выполнения некоторых задач для меня, используя 4 потока, работающие с максимальной пропускной способностью, насколько я могу ожидать ускорения по сравнению с последовательным кодом?В два раза быстрее?В четыре раза быстрее?

Пожалуйста, предоставьте ссылку для вашего ответа.

И, пожалуйста, не закрывайте этот вопрос как слишком широкий или не содержащий пример кода.Предоставление примера кода отрицательно скажется на цели этого вопроса, поскольку я нахожусь в поиске общего теоретического ответа, который можно было бы использовать в сфере продаж для параллельных вычислений.Я НЕ задаюсь вопросом об особой эффективности какого-то конкретного фрагмента кода.

Ответы [ 2 ]

0 голосов
/ 21 октября 2018

Нет ограничений на использование <thread>.Он создает потоки ОС, поэтому может линейно масштабироваться в зависимости от того, сколько у вас ядер.

Теперь для вопроса о реальных ядрах и логических процессорах (Hyperthreading, SMT) вы можете найти https://superuser.com/a/279803/112292 интересным.Есть также много других тестов.

SMT обычно хорош, когда он может скрыть задержку памяти.Таким образом, ускорение SMT, которое вы можете получить, зависит исключительно от вашего приложения (оно требует больших вычислительных ресурсов или памяти?), И единственный способ найти это - эталонный тест.

0 голосов
/ 21 октября 2018

Нет определенного номера.

С практической точки зрения в std :: thread нет ничего, что могло бы препятствовать линейному масштабированию.И это переводится в реальный мир.Использование десятков ядер ЦП тривиально с STD: thread.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...