2009-08-19 8 views
11

Przez "współbieżność" rozumiem lekkie procesy, takie jak aktorzy Erlanga i współbieżna GC, mające na celu sprawne działanie takich procesów.Czy INRIA zamierza dodać prymitywy współbieżności do OCaml?

Byłoby bardzo fajnie, gdyby INRIA pozbyła się tych wad obecnej wersji OCaml, aby OCaml był bardziej przygotowany na wielordzeniową przyszłość.

P.S. F # nie jest tym, czego szukam.

Odpowiedz

9

no

nie mogę być bardziej zwięzły, bez powtarzania jego wyjaśnienie. Mówi sama za siebie. Tak, to jest od 2002 r., Ale nie słyszałem, żeby się nad tym zastanawiał, a z tekstu nie wydaje się prawdopodobne, że wycofa się z tych celów.

W przypadku bieżących prac związanych z jednoczesnym programowaniem funkcjonalnym, prawdopodobnie rozwiązania MPI (with ocaml bindings) mogą być rozwiązaniem problemu. Oczywiście nie jest to równoległość pamięci współdzielonej. Istnieje również concurrent ML.

+1

Nie jestem gotowy, aby zagłębić się w archiwach właśnie teraz, ale jestem pewien, że pojawiły się nowsze wątki, w których wyrażono podobne uczucia. INRIA koncentruje się na wspieraniu języka OCaml w taki sposób, nie przesuwając się do przodu o nowe funkcje, takie jak LWP lub współbieżne środowisko uruchomieniowe. Czy to nie jest po części kwestia HLVM Jona Harropa? –

+0

ocaml4multicore jest dostępny (z ograniczeniami), patrz: http: //www.algo-prog.info/ocmc/web/ – nlucaroni

+1

Warto zwrócić uwagę na to, co M. Leroy opublikował na liście OCaml w 2002 roku, tak samo było w przypadku maszyn SMP, które nie były tak powszechne, jak są dzisiaj. Wciąż jednak okaże się, czy dodanie równoległego parowania pamięci współdzielonej do środowiska wykonawczego OCaml jest lepszym rozwiązaniem niż tradycyjne podejście do optymalizacji systemów SMP: fork/exec i komunikacja międzyprocesowa. Wygląda na to, że INRIA nie wprowadziła jeszcze żadnych zapowiedzi, które zmieniłyby jego kolektywny umysł. –

2

Jest J&oCaml, który jest ...

Objective Caml Plus (&) join calculus, czyli OCaml przedłużony o współbieżnych i rozproszonych programowania.

+3

Ale nawet z JoCaml musisz jawnie wywołać fork, jeśli chcesz użyć wielu rdzeni. – aneccodeal

0

The Thread module w bibliotece standardowej zapewnia prymitywów współbieżności i został aro i przez dłuższą chwilę. Istnieje również strona third o nazwie libraries, która udostępnia interfejsy API o wyższym poziomie/różnych współbieżności.

Ale wygląda na to, że jesteś conflating concurrency and parallelism.

OCaml oczywiście nie wchodzi w drogę równoległości. Możesz uruchomić OCaml na tysiącach lub milionach maszyn w tym samym czasie. Istnieje nawet MPI bindings, aby ułatwić programowanie dla bardzo równoległych superkomputerów. Jednak obecna referencyjna implementacja OCaml nie będzie automatycznie porównywać współbieżnych programów, co, jak sądzę, jest tym, co Cię bardziej interesuje.

Może Cię zainteresować Multicore OCaml, który zapewnia lepszą obsługę paralelizmu pamięci współdzielonej, ponieważ komputery SMP stały się bardziej popularne. dość rozpowszechnione w ciągu ostatnich kilku dekad i byłoby naprawdę miło łatwiej je zoptymalizować. Wydaje się, że robią powolny, ale stały postęp i starają się to naprawić.