2010-07-30 2 views
10

J'apprends Scala dans le but d'écrire des simulations basées sur des agents en utilisant la concurrence des acteurs. Actuellement, je ne connais pas grand-chose à OpenCL, et avant que je ne plonge, quelqu'un peut-il me dire s'il est susceptible d'être approprié/compatible avec les simulations basées sur un agent?OpenCL est-il bon pour la simulation par agent?

Si oui, alors ScalaCL semble très attrayant.

+0

Je trouve que le GPU peut accélérer les choses extrêmement mais, comme l'a suggéré, il est non trivial de les coder et il n'a rien à voir avec les acteurs. Je pense que je m'en tiendrai aux acteurs de Scala et je vérifierai Akka. http://gpgpu.org/index.php?s=agent+based&searchbutton=Search – Pengin

Répondre

4

Vous devez utiliser OpenCL si vous avez des calculs de poids lourds qui peuvent être parallélisables et que vous voulez utiliser votre carte graphique pour le faire (ou une partie de celui-ci).
Il a un modèle de calcul un peu étrange (du moins si vous connaissez juste la programmation "générale" et non comment le GPU fonctionne ou si vous avez de solides antécédents dans certains domaines des mathématiques), et quelques limitations .

donc je pense qu'il est tout à fait improbable que ce que vous recherchez.

Les acteurs ont très peu à voir avec OpenCL, je pense que le seul point commun des deux que les deux traitent le problème du calcul parallèle, mais dans une perspective très différente. IMO le modèle d'acteur est beaucoup plus facile à comprendre et probablement aussi à utiliser (mais c'est juste une supposition car je n'avais pas vraiment d'affaires avec OpenCL jusqu'ici).

Si vous souhaitez implémenter un système basé sur un agent, les acteurs peuvent être très utiles. Vous pouvez jeter un oeil à des acteurs standards scala ou implémentations alternatives:

  • Akka, offrant également de nombreuses fonctionnalités supplémentaires sur des acteurs + beaux documents avec quelques tutoriels
  • acteurs scalaz
2

OpenCL est généralement seulement bon pour accélérer les programmes qui impliquent de faire la même chose plusieurs fois avec des données différentes. Si vos agents font tous la même chose en même temps, alors oui, cela pourrait être approprié et compatible.

Sinon, les deux ne correspondent tout simplement pas bien ensemble, et OpenCL sera probablement plus lent que les choses fonctionnent plutôt que plus rapide.