40 votos

¿Cuál es el estado de OCaml la paralelización habilidades?

Estoy interesado en el uso de OCaml para un proyecto, sin embargo no estoy seguro de donde sus capacidades de paralelización son más. Hay un mensaje de capacidad de pase en OCaml? Es OCaml capaces de utilizar eficazmente los más de 1 CPU?

La mayoría de lo que he leído sobre el tema fue escrito en el período 2002-2006, y no he visto nada más recientes.

Gracias!

23voto

huitseeker Puntos 6049

Este problema de 2009 de la Caml semanal de noticias ("CWN", un compendio de mensajes interesantes desde el caml lista) muestra que:

  • la línea oficial del partido en la rosca y Ocaml no ha cambiado. Una notable cita:

    (...) en general, toda la norma de la biblioteca no es thread-safe. Probablemente que debe estar indicado en el documentación de la librería de hilos, pero no hay mucho punto en la documentación por la biblioteca estándar de módulo. -- X. Leroy

    (para saber cómo Ocaml hilos todavía puede ser útil, ver un comentario por el culpable a sí mismo en otra pregunta sobre ASÍ)

  • los más frecuentemente adoptado paradigma para el paralelismo es de paso de mensajes, y de la nota es X. Leroy del OcamlMPI, proporcionando enlaces para la programación en SPMD estilo contra el estándar MPI. El mismo CWN problema me he apuntado anteriormente proporciona referencias a ejemplos, y muchos otros proyectos relacionados.

  • otro de paso de mensajes solución es JoCaml, pionero de un nuevo estilo simultáneas de comunicaciones conocido como unirse cálculo. Tenga en cuenta que es binario compatible con OCaml compiladores.

  • eso no impidió que la confección de un tiempo de ejecución de cuyo GC es aceptar con el paralelismo, sin embargo: ver una discusión de OCAML4MC en este otro tema de la CWN.

También hay:

  • Netmulticore - multi-procesamiento de compartir ocaml valores a través del mapeado de memoria compartida.

  • CamlP3l - compilador para Caml programas paralelos.

  • OCaml-Java - un OCaml compilador que emite bytecode de Java


No he seguido más recientes discusiones acerca de Ocaml y la programación paralela, aunque. Voy a dejar este CW para que otros puedan actualizar lo que menciono. Sería genial si esta pregunta podría alcanzar el mismo nivel de integridad como el análogo uno de Haskell.

8voto

Michael Ekstrand Puntos 12849

En la actualidad, la OCaml tiempo de ejecución no admite la ejecución a través de múltiples núcleos en paralelo, de manera que una sola OCaml proceso puede tomar ventaja de varios núcleos. Es poco probable que esto cambie directamente; la dirección de la OCaml que los desarrolladores están más interesados en tomar para aumentar el paralelismo parece ser que permite a varios de OCaml tiempos de ejecución para ejecutar en paralelo en un solo proceso; esto permitirá que por muy rápido que se paso de mensajes, pero no va a permitir que múltiples hilos de ejecución en paralelo en una memoria compartida de configuración. Los principales hangup es el recolector de basura; hace algunos años, el equipo experimentó con un concurrente de la GC, pero introdujo inaceptables retrasos en el subproceso único caso.

Hay un par de proyectos, es decir, Functory y OCamlnet, que proporcionan multinúcleo-feliz paralelismo mediante varios procesos.

En general, la OCaml de la comunidad tiende a favorecer el paso de mensajes enfoques, el cual puede realizarse a través de límites de proceso (como OCamlnet), sobre una sola proceso de memoria compartida de subprocesamiento múltiple. Si el programa puede ser dividida en múltiples procesos (muchos!), entonces sí, usted puede utilizar de manera eficaz con múltiples CPUs.

1voto

hains Puntos 1

BSMLlib ofrece una versión simplificada de la interfaz de programación de datos para la programación paralela en OCaml. Su ejecución asciende a la BSP-estilo del paso de mensajes, pero es determinista e incluso declarativo para un subconjunto de OCaml. El concepto clave es el de " un par tipo que corresponde a un vector de valores, uno por cada proceso.

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

Gaétan Hains La Universidad Paris-Est

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X