41 votes

Quel est l'état de OCaml parallélisation capacités?

Je suis intéressé par l'utilisation d'OCaml pour un projet, mais je ne suis pas sûr de savoir où ses possibilités de parallélisation sont plus. Est-il un message de la capacité de passage en OCaml? Est OCaml en mesure d'utiliser efficacement plus de 1 CPU?

La plupart de ce que j'ai lu sur le sujet a été écrite pour la période 2002-2006, et je n'ai pas vu quelque chose de plus récent.

Merci!

23voto

huitseeker Points 6049

Cette édition 2009 de la Caml nouvelles hebdomadaires ("RCE", un recueil de messages intéressants de la caml liste) montre que:

Il y a aussi:

  • Netmulticore - multi-processus de partage des valeurs ocaml via des partages de mémoire partagée.

  • CamlP3l - compilateur Caml programmes parallèles.

  • OCaml-Java - un compilateur OCaml qui émet le bytecode Java


Je n'ai pas suivi plus récentes discussions sur Ocaml & programmation parallèle, cependant. Je pars de ce CW afin que d'autres puissent mettre à jour ce que j'ai mentionné. Ce serait formidable si cette question pourrait atteindre le même niveau de complétude que l'analogie de l'un pour Haskell.

8voto

Michael Ekstrand Points 12849

À l'heure actuelle, le OCaml exécution ne prend pas en charge l'exécution de multiples cœurs en parallèle, de sorte qu'un seul OCaml processus ne peut pas profiter de plusieurs cœurs. Il est peu probable que le changement directement; la direction de l'OCaml les développeurs sont plus intéressés à prendre pour augmenter le parallélisme semble être ce qui permet à plusieurs OCaml temps d'exécution pour exécuter en parallèle, dans un seul processus, ce qui permet une grande rapidité de transmission de message, mais ne permettra pas d'exécuter plusieurs threads en parallèle dans une mémoire partagée de configuration. Les principaux raccrochage est le garbage collector; il y a quelques années, l'équipe expérimentée avec un concurrent à l'GC, mais il introduit inacceptable des ralentissements dans le single-threaded cas.

Il ya un couple de projets, à savoir Functory et OCamlnet, qui fournissent le multicœur heureux parallélisme à l'aide de plusieurs procédés.

En général, les OCaml communauté tend à favoriser la transmission de message approches, ce qui peut être fait dans les limites du processus (comme OCamlnet n'), au cours d'un processus unique à mémoire partagée multithreading. Si votre programme peut être divisé en plusieurs processus (beaucoup de peut!), alors oui, vous pouvez efficacement l'utilisation de plusieurs Processeurs.

1voto

hains Points 1

BSMLlib simplifie la programmation de l'interface pour les données en parallèle de la programmation en OCaml. Son exécution montants à BSP-style de la transmission de message, mais il est déterministe et même déclarative pour un sous-ensemble de OCaml. Le concept clé est le " un par type, ce qui correspond à un vecteur de valeurs, un par un processus.

http://traclifo.univ-orleans.fr/BSML/ http://fr.wikipedia.org/wiki/Bulk_Synchronous_Parallel_ML

Gaétan Hains Université Paris-Est

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X