Ocaml并行化构建

时间:2016-12-03 08:21:44

标签: parallel-processing ocaml

假设我想构建一个并行编译Ocaml源代码的程序。我实际上想了解如何使用Ocaml实现这一目标。因此,鉴于今天Ocaml的当前状态,我如何并行化我的程序的一部分?

我是否应该使用Unix模块生成新进程? 在并行编译的情况下,这是否会产生任何开销/性能影响?

1 个答案:

答案 0 :(得分:0)

要编译文件,您必须运行ocaml编译器,每个文件一个。所以,是的,您必须启动新进程,并且Unix模块具有必要的功能。

关于间接费用或性能影响,请考虑以下事项:

1)您需要为每个编译的文件启动一个进程。按顺序执行的天气或平行启动的进程数保持不变。

2)编译文件需要很长时间,因为与开始每次编译所需的簿记相比,即使您考虑并行编译也是如此。

您是否担心并行启动和跟踪多个编译器进程的开销?不要。那不到0.1%的时间。另一方面,通过运行2个编译器来使用2个cpu核心,基本上会使你的速度加倍。

或者您是否担心并行运行多个编译器?你需要两倍的内存,并且大多数现代的cpus缓存都是共享的,因此缓存性能也会受到一定程度的影响。但除非你正在研究一些绝对缺乏内存的嵌入式系统,否则不会出现问题。因此,使用多核的好处远远超过了缺点。

只需遵循并行运行的简单规则:每个CPU核心运行一个作业,可能需要一个额外的工作来平滑IO等待。更多的工作将使他们争取CPU时间而没有任何好处。