2010-07-30 8 views
10

Sto imparando Scala con l'obiettivo di scrivere simulazioni basate su agenti usando la concorrenza degli attori. Attualmente so molto poco di OpenCL e prima di immergermi qualcuno può dirmi se è probabile che sia appropriato/compatibile con le simulazioni basate su agenti?OpenCL è adatto alla simulazione basata su agenti?

In tal caso, quindi ScalaCL sembra molto interessante.

+0

Ho scoperto che la GPU può velocizzare enormemente le cose ma, come suggerito, non è banale codificarle e non ha nulla a che fare con gli attori. Penso che resterò attaccato agli attori di Scala e guarderò Akka. http://gpgpu.org/index.php?s=agent+based&searchbutton=Search – Pengin

risposta

4

È consigliabile utilizzare OpenCL se si dispone di calcoli pesanti che possono essere parallelizzati e si desidera utilizzare la scheda grafica per eseguirla (o parti di essa).
Ha un modello un po 'strano di computazione (almeno se si conosce solo la programmazione "generale" e non come funziona la GPU o se si ha un forte background in alcune aree della matematica), e piuttosto alcune limitazioni cosa/come si può fare .

Quindi penso che sia abbastanza improbabile che sia quello che stai cercando.

Gli attori hanno molto poco a che fare con OpenCL, penso che l'unica comunanza dei due sia che affrontano il problema del calcolo parallelo, ma da una prospettiva molto diversa. IMO il modello degli attori è molto più facile da capire e probabilmente anche da usare (ma è solo un'ipotesi, dato che finora non avevo alcun rapporto con OpenCL).

Se si desidera implementare un sistema basato su agenti, gli attori possono essere molto utili. Si potrebbe avere uno sguardo attori Scala standard, o implementazioni alternative:

  • Akka, che offrono anche molte funzionalità aggiuntive in cima attori + belle documenti con alcuni tutorial
  • attori in scalaz
2

OpenCL in genere è utile solo per velocizzare i programmi che implicano la stessa operazione molte volte con dati diversi. Se i tuoi agenti faranno tutti la stessa cosa allo stesso tempo, allora sì, potrebbe essere appropriato e compatibile.

Altrimenti, i due non si adattano bene insieme e OpenCL probabilmente farà rallentare le cose piuttosto che più velocemente.

Problemi correlati