2009-08-19 3 views
11

Под «параллелизмом» я подразумеваю легкие процессы, такие как актеры Эрланг и параллельные GC, направленные на то, чтобы такие процессы работали плавно.Является ли INRIA для добавления примитивов параллелизма в OCaml?

Было бы здорово, если бы INRIA избавилась от этих недостатков текущей реализации OCaml, чтобы сделать OCaml более подготовленным к многоядерному будущему.

P.S. F # не то, что я ищу.

ответ

9

no

Я не могу быть более кратким, не воспроизводя его объяснения. Это говорит само за себя. Да, это с 2002 года, но я не слышал, чтобы он влиял на эту проблему, и из текста не кажется вероятным, что он откажется от этих целей.

Для современных разработок по параллельному функциональному программированию возможно решение MPI (with ocaml bindings) может быть решением вашей проблемы. Очевидно, это не параллелизм разделяемой памяти. Существует также concurrent ML.

+1

Я сейчас не готов копаться в архивах, но я уверен, что были более свежие темы, в которых были выражены подобные чувства. INRIA ориентирована на поддерживаемый язык OCaml, а не на продвижение больших новых функций, таких как LWP или параллельное время выполнения. Разве это не то, что касается ХЛВМ Йона Харропа? –

+0

ocaml4multicore доступен (с ограничениями), см .: http: //www.algo-prog.info/ocmc/web/ – nlucaroni

+1

Стоит отметить, что то, что М. Лерой поставил в лекцию OCaml еще в 2002 году, было так, что машины SMP были не так распространены, как сегодня. Тем не менее, еще предстоит выяснить, является ли добавление параллелизма с разделяемой памятью во время выполнения OCaml - это победа над более традиционным подходом к оптимизации для SMP-систем: fork/exec и interprocess communication. Похоже, что INRIA еще не сделала никаких заявлений о том, что коллективный ум изменился. –

2

Существует J&oCaml, что ...

Objective Caml плюс (&) join calculus, то есть, OCaml расширена для одновременного и распределенного программирования.

+3

Но даже с помощью JoCaml вам нужно явно вызвать fork, если вы хотите использовать несколько ядер. – aneccodeal

2

кажется, что Jane Street финансирует проект для добавления Параллельное GC в OCaml

+2

Это привело к OCaml4Multicore, но это не очень полезно, потому что распределение серьезно повреждает масштабируемость и распределение практически неизбежно в OCaml из-за отсутствия типов значений. –

0

В Thread module в стандартной библиотеке обеспечивает параллелизм примитивы , и был aro и довольно долгое время. Также есть third участник libraries, который предоставляет API-интерфейсы более высокого уровня/разных параллелизма.

Но это звучит так, как будто вы conflating concurrency and parallelism.

OCaml, конечно, не мешает параллелизму. Вы можете одновременно запускать OCaml на тысячах или миллионах компьютеров. Есть даже MPI bindings, чтобы упростить программу для массовых параллельных суперкомпьютеров. Но текущая рекомендация OCaml не будет автоматически распараллелить параллельные программы, которые, я думаю, вам больше интересны.

Возможно, вас заинтересует Multicore OCaml, который обеспечивает лучшую поддержку параллелизма с общей памятью, поскольку компьютеры SMP стали довольно распространенный за последние пару десятилетий, и было бы очень приятно их легко оптимизировать. Похоже, они делают медленный, но устойчивый прогресс и пытаются понять это правильно.