私は、アクターの並行性を使用してエージェントベースのシミュレーションを作成することを目的としてScalaを学習しています。私は現在OpenCLについてほとんど知りませんが、飛び込む前に、エージェントベースのシミュレーションと適切/互換性があるかどうか誰かに教えてもらえますか?
もしそうなら、ScalaCLは非常に魅力的に見えます。
並列化できる重い計算があり、グラフィックカードを使用してそれ(またはその一部)を実行する場合は、OpenCLを使用する必要があります。
それは少し奇妙な計算モデルを持っており(少なくとも「一般的な」プログラミングを知っていて、GPUがどのように機能するかを知らない場合、または数学のいくつかの分野で強いバックグラウンドを持っている場合)、何ができるか/どのようにできるかについてかなりの制限があります。
ですから、それがあなたが探しているものである可能性は非常に低いと思います。
アクターはOpenCLとはほとんど関係がありません。2つの共通点は、どちらも並列計算の問題に対処しているということだけですが、非常に異なる観点からです。アクターモデルのIMOは、はるかに理解しやすく、おそらくそれを使用することもできます(ただし、これまでOpenCLと実際にビジネスを行っていなかったため、これは単なる推測です)。
エージェントベースのシステムを実装したい場合は、アクターが非常に役立ちます。標準のscalaアクター、または代替の実装を見ることができます。
OpenCLは通常、異なるデータで同じことを何度も行うプログラムを高速化する場合にのみ適しています。エージェントがすべて同時に同じことを行う場合は、そうです、それは適切で互換性があるかもしれません。
そうでなければ、2つはうまく合わず、OpenCLはおそらく物事を速くするのではなく遅くするでしょう。