2011-01-20 20 views
6

Czy ktoś wie, czy możliwe jest użycie OpenMP z kodem źródłowym OCaml?OpenMP z OCAML

Albo inna aplikacja/otoczenie pracy, kompatybilne z OCaml, które pozwala mi uruchamiać programy równoległe wykorzystujące wiele rdzeni?

Jeśli tak, w jaki sposób? Czy masz łatwy przykład?

Odpowiedz

7

Obecnie istnieje OC4MC (ocaml 4 multi-core) do wykonywania wielu przetwarzania pamięci współdzielonej. Nie wykorzystałem tego projektu, ale są całkiem nowe aktualizacje, więc mogę tylko założyć, że projekt wciąż idzie naprzód.

JOCAML to kolejne współbieżne rozszerzenie do ocaml implementujące rachunek sprzężeń. Nie korzystałem również z tego projektu, ale jego strona jest aktualizowana, aby wspomnieć o ocaml 3.12, który pojawił się całkiem niedawno. Lekceważenie; zobacz komentarz.

Jeśli możesz oderwać się od paradygmatu OpenMP, to istnieje ocaml bindings for mpi. Korzystam z tego projektu i nie miałem z nim problemów, a korzystanie z niego jest dość łatwe, jeśli znasz MPI.

Wreszcie, niektóre (prawdopodobnie nieopłacone) pakiety dotyczące przetwarzania wielordzeniowego/równoległego można znaleźć na stronie ocaml hump.

+2

jocaml nie pozwoli „wykorzystać wiele rdzeni” - nie więcej niż SML samego – ygrek

+1

próby zainstalowania OC4MC ale ja, jak wynik ten błąd: gcc -O -I ../ Runtime/asmrun - I ../ wykonawcze/ByteRun -Wall -D_FILE_OFFSET_BITS = 64 -D_REENTRANT -fPIC -DNATIVE_CODE -DTARGET_i386 -DSYS_linux_elf -c posix.c posix.c W funkcji 'caml_thread_initialize' posix.c: 215: błąd: „caml_main_thread_struct "niezadeklarowany (pierwsze użycie w tej funkcji) posix.c: 215: error: (Każdy niezadeklarowany identyfikator jest zgłaszany tylko raz posix.c: 215: błąd: dla każdej funkcji, w której pojawia się.) make: *** [ posix_n.o] Błąd 1 Błąd podczas wykonywania 'make libt hreadsnat.a "Jak mogę to zrobić? Dziękuję Ci !! :) – Zany