Ocaml processus ne peut utiliser qu'un seul noyau et afin d'utiliser plusieurs cœurs, je dois exécuter plusieurs processus. Y a-t-il des frameworks Ocaml à utiliser pour paralléliser les simulations Monte Carlo?Comment utiliser les multicœurs dans Ocaml pour faire des simulations Monte Carlo?
9
A
Répondre
3
Actuellement, la seule façon de le faire est avec MPI, et vous pouvez trouver des liaisons ocaml pour cela sur Xavier Leroy's website.
8
Utilisez la invoke
combinateur pour appliquer une fonction à une valeur dans un autre processus (fourchue), puis bloquer en attendant le résultat lorsque la valeur ()
est appliquée suivant:
let invoke (f : 'a -> 'b) x : unit -> 'b =
let input, output = Unix.pipe() in
match Unix.fork() with
| -1 -> (let v = f x in fun() -> v)
| 0 ->
Unix.close input;
let output = Unix.out_channel_of_descr output in
Marshal.to_channel output (try `Res(f x) with e -> `Exn e) [];
close_out output;
exit 0
| pid ->
Unix.close output;
let input = Unix.in_channel_of_descr input in
fun() ->
let v = Marshal.from_channel input in
ignore (Unix.waitpid [] pid);
close_in input;
match v with
| `Res x -> x
| `Exn e -> raise e
Questions connexes
- 1. Simulation Monte Carlo dans la prévision?
- 2. Recherche de chiffres PI en utilisant Monte Carlo
- 3. Comment déterminer une formule pour le temps d'exécution donné des données quantitatives, Excel, courbes de tendance, Monte Carlo simulation
- 4. Comment fonctionnent les interruptions dans les machines multicœurs/multicompu?
- 5. OCaml: Définir les modules
- 6. Processeurs d'assemblage et multicœurs
- 7. Simulations simples pour la physique en Python?
- 8. Gestion des dépendances circulaires dans OCaml
- 9. Langue (s) appropriée (s) pour les simulations en modélisation?
- 10. Comment supprimer les espaces d'une chaîne dans OCaml?
- 11. Fonctions récursives dans les objets OCaml
- 12. comment utiliser des commandes DOS pour faire suite à
- 13. Valeur absolue pour les flotteurs dans le noyau OCaml
- 14. UML pour OCaml objets immédiats
- 15. OCaml: Type Vérification des objets
- 16. OCaml: Comment fonctionne List.fold_left?
- 17. UIView dans le contrôleur de navigation monte ...?
- 18. Comment utiliser jquery pour faire défiler horizontalement
- 19. OCaml: valeurs par défaut pour les arguments de fonction?
- 20. Comment télécharger et installer Emacs for OCaml?
- 21. Comment faire défiler en douceur pour les listes dans Swing
- 22. OCaml: Vérifier la liste des dossiers d'adhésion
- 23. Comment faire pour conserver les attributs des contrôles utilisateur ASP.NET
- 24. Comment faire pour redimensionner les contrôles dans les fenêtres redimensionnables?
- 25. Utiliser SSIS pour faire une requête entre
- 26. Ocaml - Itératif à récursion
- 27. OCaml: Correspond à l'expression dans un autre?
- 28. Modèle de conception de visiteur dans OCaml
- 29. Functors in Ocaml
- 30. Dernière occurrence d'élément dans une liste dans OCaml
ocaml4multicore est disponible (avec limitation), voir: http://www.algo-prog.info/ocmc/web/ – nlucaroni