scala / akka / stm дизайн для большого общего состояния? - PullRequest
6 голосов
/ 02 августа 2011

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

Входные данные двигателя состоят из небольшого числа скалярных входных данных и очень большой хеш-таблицы. Каждый экземпляр механизма будет использовать свои скалярные входные данные, чтобы внести небольшое локальное изменение в хеш-таблицу, вычислить достоверность, а затем отбросить свои изменения (их не нужно фиксировать / просматривать другим экземпляром механизма). Значение добродетели будет возвращено какому-то координатору, который выберет один из результатов.

Я читал о STM TransactionalMap как о средстве совместного использования. Это кажется идеальным, но я не вижу полных примеров использования его в качестве общего состояния.

Вопросы:

  • Кажется ли модель актера / stm подходящей для этой проблемы?
  • Можете ли вы показать конкретный пример того, как распределить общее состояние? (это Ref [TransactionalMap [,]] как сообщение?
  • Есть ли что-то отличное в распределении общего состояния внутри узла, в отличие от разных узлов?

Спрашивающий разум хочет знать,

Allan

1 Ответ

1 голос
/ 30 августа 2011

С точки зрения обработки разделяемой памяти это не похоже на то, что STM будет подходящим вариантом, потому что вы не хотите, чтобы изменения, сделанные в экземплярах движка, фиксировались в общей копии хеш-таблицы.

Вместо этого неизменный HashMap может быть более подходящим. Элементы, которые не изменяются на карте, могут совместно использоваться экземплярами механизма, и только различия в каждой карте занимают дополнительное пространство памяти.

Модель актера очень хорошо подошла бы тому, что вы хотите сделать. Установите один субъект для каждого необходимого экземпляра движка и передайте ему сообщение со скалярными значениями и хэш-картой. Затем пусть он вернет результаты координатору.

...