@VZVZ
Reverse-Engineer, Software Developer, Architect

Существуют ли платформы, где все задачи автоматом распараллеливаются по ядрам ЦП, и не нужно в коде создавать потоков?

То есть вот такой код:
for (var i = 0; i < 1000000000; i++)
{
...
}

на 2-ядерном ЦП займет вовсе не 50%, а под 100; на 4-ядерном не 25%, а опять же под 100, таким образом, железо+ОС автоматом обеспечивают максимальное быстродействие текущей (primary) задачи. Делает то, что обычно приходится делать программисту вручную.

Где такое используется?
  • Вопрос задан
  • 574 просмотра
Пригласить эксперта
Ответы на вопрос 4
RiseOfDeath
@RiseOfDeath
Диванный эксперт.
Железо (да и даже ОС) не может знать, можно-ли выполнять такие-то куски вашей проги параллельно или нет. Прога либо сразу должна быть под такое скомпилирована, либо нужен какой-то промежуточный байт-код, который будет "дообрабатываться" перед выполнением.
Ответ написан
@MechanID
Админ хостинг провайдера
Железо такую магию делать не будет.
Ответ написан
Комментировать
В общем виде такую задачу не решить.
Но можно распараллеливать некоторые виды операций над набором данных, но при этом на функцию накладывается ряд ограничений.

Примеры: OpenMP, GPU Shaders.
Ответ написан
Комментировать
GavriKos
@GavriKos
На самом деле такое возможно, только немного в обратном направлении. Железо определяет, что одно ядро перегружено, а остальные простаивают, и часть мощности остальных ядер докидывает в нагруженное ядро. По моему современные процы так и делают (серверные). Только не полностью ядро перекидывается, а какая то часть.
А алгоритм при этом остается абсолютно однопоточным.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы