gpt4 book ai didi

multicore - 如何在 Ocaml 中使用多核进行蒙特卡罗模拟?

转载 作者:行者123 更新时间:2023-12-04 03:47:08 24 4
gpt4 key购买 nike

Ocaml 进程只能使用一个核心,为了使用多个核心,我必须运行多个进程。

是否有任何 Ocaml 框架可用于并行化 Monte Carlo 模拟?

最佳答案

使用以下 invoke组合器将函数应用于另一个( fork )进程中的值,然后在 () 时阻塞等待其结果应用值:

  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

关于multicore - 如何在 Ocaml 中使用多核进行蒙特卡罗模拟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1287318/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com