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

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

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


person Pengin    schedule 30.07.2010    source источник
comment
Я обнаружил, что графический процессор может значительно ускорить процесс, но, как и предполагалось, кодировать их нетривиально, и это не имеет ничего общего с актерами. Думаю, я остановлюсь на актерах в Scala и попробую Akka. gpgpu.org/index.php?s=agent+based&searchbutton=Search   -  person Pengin    schedule 03.08.2010


Ответы (2)


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

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

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

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

  • Akka, также предлагающий множество дополнительных функций поверх актеров + приятные документы с некоторыми руководствами
  • акторы в scalaz
person Sandor Murakozi    schedule 30.07.2010

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

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

person RD1    schedule 30.07.2010