Попытка найти учебники по Scala, которые фокусируются на многопоточности - PullRequest
11 голосов
/ 23 августа 2011

Похоже, что в Scala есть множество функций и улучшений по сравнению с Java.Мне трудно выделить материал, который я хочу узнать в первую очередь о Scala.Что мне нужно искать в Google, если я просто хочу, например, взять циклы for и заставить их работать в нескольких потоках или процессах?Я пришел из опыта вычислений на GPU, где было действительно просто получить общее представление о том, как заставить вещи работать быстрее.

1 Ответ

21 голосов
/ 23 августа 2011
  • Параллельные коллекции Scala особенно просты.Распараллелить дорогостоящую операцию f(i) над целыми числами i <- 1 to 10 так же просто, как,

    (1 to 10).par.map(i => f(i))
    

    Scala попытается выделить количество рабочих потоков, сопоставимое с количеством ядер / процессоров, доступных в вашей системе.,Вот видео с более подробной информацией: http://days2010.scala -lang.org / node / 138/140

  • Платформа Akka является зрелойпрежде всего актерский подход к параллелизму, который позволяет распараллеливать потоки или удаленные процессы.Актеры - это в основном потоки, которые могут передавать сообщения, а не делиться состоянием.Недавно созданная компания Typesafe разрабатывает как язык Scala, так и язык Akka.

  • Вы также можете попробовать черновой выпуск программной транзакционной памяти(STM) библиотека для Scala.Библиотека нацелена на включение в стандартный дистрибутив Scala.По сравнению с потоками, управляемыми вручную, STM представляет собой более простую модель параллелизма, которая уменьшает вероятность ошибок, таких как взаимные блокировки.Он работает, группируя последовательности операций связи в единый синхронизированный блок, который может дать сбой и выполнить откат, если несколько потоков делают что-то с общим состоянием, которое оказывается взаимно несовместимым.Предположительно, для удобства нужно платить за производительность.Я не уверен, насколько хорошо STM масштабируется для большого количества потоков.

  • Spark Framework относится к кластерным вычислениям и представляется обобщением MapReduce.

  • Для программирования на GPU из Scala есть ScalaCL .Вы также можете использовать Java-привязки .

  • Существует также очень интересная работа по виртуализации языка, выполняемая совместными усилиями лабораторий в Стэнфорде и EPFL. На этой странице есть ссылки на статьи, а в Стэнфорде есть курс с множеством ссылок.Существует несколько интересных приложений для разработки DSL для высокопроизводительных вычислений в гетерогенных вычислительных средах, включая графические процессоры.

Обновление .Даниэль Собрал также предложил Инструменты и библиотеки вики .

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