Я изучаю Scala с целью записи основанных на агенте моделирований с помощью параллелизма агента. Я в настоящее время знаю очень мало о OpenCL, и прежде чем я погружусь в кого-либо, может сказать мне, если это, вероятно, будет соответствующим/совместимым с основанными на агенте моделированиями?
Если так, затем ScalaCL выглядит очень привлекательным.
Вам следует использовать OpenCL, если у вас есть тяжелые вычисления, которые можно распараллелить, и вы хотите использовать для этого свою графическую карту (или ее части).
У него немного странная модель вычислений (по крайней мере, если вы знаете только «общее» программирование, а не то, как работает графический процессор, или если у вас есть большой опыт в некоторых областях математики), а также некоторые ограничения на то, что и как вы можете делать.
Так что я думаю, что это маловероятно, что вы ищете.
Субъекты имеют очень мало общего с OpenCL, я думаю, единственная их общая черта в том, что они оба решают проблему параллельных вычислений, но с совершенно другой точки зрения. ИМО, модель акторов намного проще понять и, вероятно, также использовать ее (но это всего лишь предположение, поскольку у меня до сих пор не было никакого дела с OpenCL).
Если вы хотите реализовать систему на основе агентов, то акторы могут оказаться весьма полезными. Вы можете взглянуть на стандартные акторы scala или альтернативные реализации:
OpenCL - это обычно хорош только для ускорения программ, которые предполагают многократное выполнение одного и того же действия с разными данными. Если все ваши агенты будут делать одно и то же одновременно, тогда да, это может быть подходящим и совместимым.
В противном случае они просто не подходят друг другу, и OpenCL, вероятно, заставит вещи работать медленнее, чем быстрее.