2009-08-19 2 views
11

Par "concomitance", j'entends les processus légers comme les acteurs d'Erlang et les GC simultanés qui visent à faire fonctionner de tels processus.L'INRIA va-t-il ajouter des primitives de concurrence à OCaml?

Il serait très cool que l'INRIA se débarrasse de ces inconvénients de l'implémentation actuelle d'OCaml pour rendre OCaml plus prêt pour l'avenir du multicœur.

P.S. F # n'est pas ce que je cherche.

Répondre

9

no

Je ne peux pas être plus concis sans reproduire son explication. Cela parle pour lui-même. Oui, c'est à partir de 2002, mais je ne l'ai pas entendu influencer sur le sujet, et d'après le texte, il ne semble pas du tout probable qu'il reculerait de ces objectifs.

Pour les développements actuels sur la programmation fonctionnelle concurrente, des solutions MPI (with ocaml bindings) peuvent être une solution à votre problème. Évidemment ce n'est pas le parallélisme de la mémoire partagée. Il y a aussi concurrent ML.

+1

Je ne suis pas prêt à fouiller dans les archives tout à l'heure, mais je suis sûr qu'il y a eu des discussions plus récentes où des sentiments similaires ont été exprimés. L'INRIA se concentre sur la prise en charge du langage OCaml tel quel, sans avancer avec de nouvelles fonctionnalités telles que LWP ou une exécution simultanée. N'est-ce pas en partie le point de HLVM de Jon Harrop? –

+0

ocaml4multicore est disponible (avec des limitations), voir: http: //www.algo-prog.info/ocmc/web/ – nlucaroni

+1

À noter: ce qu'a dit M. Leroy à la liste OCaml en 2002, c'était que les machines SMP n'étaient pas aussi répandues qu'aujourd'hui. Reste à savoir si l'ajout d'un parallélisme de mémoire partagée au runtime OCaml est une victoire par rapport à l'approche plus traditionnelle de l'optimisation pour les systèmes SMP: fork/exec et communication interprocessus. Il semble que l'INRIA n'ait pas encore annoncé que son esprit collectif a changé. –

2

Il y a J&oCaml, qui est ...

Objective Caml plus (&) le join calculus, qui est, OCaml étendu pour la programmation concurrente et distribuée.

+3

Mais même avec JoCaml vous devez explicitement appeler fork si vous voulez utiliser plusieurs cœurs. – aneccodeal

0

Le Thread module dans la bibliothèque standard fournit des primitives d'accès simultané , et a été aro et pendant un bon moment. Il existe également third partie libraries qui fournissent des API de concurrence de niveau supérieur/différent. Il semble que vous soyez conflating concurrency and parallelism. OCaml, bien sûr, n'obstrue pas le parallélisme. Vous pouvez exécuter OCaml sur des milliers ou des millions de machines en même temps. Il existe même MPI bindings pour faciliter la programmation de supercalculateurs massivement parallèles. Mais l'implémentation OCaml de référence actuelle ne va pas automatiquement paralléliser les programmes concurrents, ce qui m'intéresse beaucoup plus.

Vous pouvez être intéressé par le Multicore OCaml qui fournit un meilleur support pour le parallélisme de la mémoire partagée, car les ordinateurs SMP sont devenus assez répandue au cours des deux dernières décennies et il serait vraiment agréable d'optimiser plus facilement pour eux. Ils semblent faire des progrès lents mais réguliers et essayer de faire les choses correctement.