Является ли OpenCL хорошим для моделирования на основе агентов?

Я изучаю Scala с целью написания симуляций на основе агентов с использованием actor concurrency. В настоящее время я мало знаю об OpenCL, и прежде чем погрузиться, кто-нибудь скажет мне, может ли быть подходящим/совместимым с симуляциями на основе агентов?

Если это так, то ScalaCL выглядит очень привлекательно.

Ответ 1

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

Поэтому я думаю, что это маловероятно, что вы ищете.

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

Если вы хотите внедрить систему на основе агента, тогда актеры могут быть весьма полезными. Вы могли бы взглянуть на стандартных участников scala или на альтернативные варианты:

  • Akka, также предлагая множество дополнительных функций поверх актеров + приятные документы с некоторыми учебниками
  • участники scalaz

Ответ 2

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

В противном случае эти два просто не подходят друг к другу, и OpenCL, вероятно, заставит все работать медленнее, а не быстрее.