@razielvamp

Есть ли какие-нибудь паттерны или фрейворки для программирования под многоядерные ARMы?

Современные серверные ARMы имеют много слабых ядер в отличии от старых-добрых x86.

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

Понятно, что в большинстве языков есть различные библиотеки мультипоточности и т.д., но разбивать каждый loop на потоки/процессы, все же, слишком ресурсоемко.

Если какие-нибудь фрейворки или свежие технологии в языках, ориентированные на многоядерность? Все эти async/await, promise'ы как-то улучшают в данном случае ситуацию?
Или это вообще задача компилятора/интерпритатора сделать так, чтобы стандартный цикл по возможности по ядрам раскидался?

Если есть какие-то примеры кода, библиотек или фреймворков на популярных языках (java, php, python, js), было бы интересно посмотреть.
  • Вопрос задан
  • 165 просмотров
Пригласить эксперта
Ответы на вопрос 2
gbg
@gbg
Любые ответы на любые вопросы
В вопросах любой оптимизации всегда на первое место идет конкретика. Раскидывание цикла по ядрам занимает время на синхронизацию потоков до и после цикла, а если у вас еще и данные не помещаются в один NUMA, вы будете больше времени атмосферу прогревать, чем считать.
Ну и редко когда так выходит, что что-то нетривиальное можно распараллелить, просто порезав цикл на части. Если речь не идет о числодробилке, конечно же.

А если речь идет о числодробилке, есть уже оптимизированные по самые яйца BLAS и ATLAS, и имеет смысл опираться на них, а не велосипедить.
Ответ написан
Комментировать
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Есть ли какие-нибудь ... технологии в языках, ориентированные на многоядерность?

OpenMP.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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