Как использовать мультиядра в Ocaml, чтобы сделать моделирования Монте-Карло?

утилита templatemaker от Adrian Holovaty ( известность Django ) использует очень интересный подход: Вы подаете его изменения той же страницы, и это "изучает", где "дыры" для переменных данных. Это не конкретный HTML, таким образом, это было бы хорошо для очистки любого другого содержания простого текста также. Я использовал его также для PDFs и HTML, преобразованного в простой текст (с pdftotext и рысью, соответственно).

9
задан Alfa07 23 August 2009 в 23:08
поделиться

2 ответа

В настоящее время единственный способ сделать это - использовать MPI, и вы привязки Ocaml для него можно найти на сайте Ксавье Лероя .

3
ответ дан 3 November 2019 в 01:02
поделиться

Используйте следующий комбинатор вызова , чтобы применить функцию к значению в другом (разветвленном) процессе и затем заблокировать ожидание ее результата, когда () применяется значение:

  let invoke (f : 'a -> 'b) x : unit -> 'b =
    let input, output = Unix.pipe() in
    match Unix.fork() with
    | -1 -> (let v = f x in fun () -> v)
    | 0 ->
        Unix.close input;
        let output = Unix.out_channel_of_descr output in
        Marshal.to_channel output (try `Res(f x) with e -> `Exn e) [];
        close_out output;
        exit 0
    | pid ->
        Unix.close output;
        let input = Unix.in_channel_of_descr input in
        fun () ->
          let v = Marshal.from_channel input in
          ignore (Unix.waitpid [] pid);
          close_in input;
          match v with
          | `Res x -> x
          | `Exn e -> raise e
8
ответ дан 3 November 2019 в 01:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: