重磅开源!阿里首款自研科学计算引擎 Mars 来了( 五 )

用户在写中间代码时,并不会需要任何的实际数据计算。

这样的好处是可以对中间过程做更多优化,让整个任务的执行更优。

目前 Mars 里主要用到了 fusion 优化,即把多个操作合并成一个执行。

对于前面一个图的例子,在tile 完成之后,Mars 会对细粒度的 Chunk 级别图进行 fusion 优化,比如8个RAND ADD SUM,每个可以被分别合并成一个节点,一方面可以通过调用如 numexpr 库来生成加速代码,另一方面,减少实际运行节点的数量也可以有效减少调度执行图的开销。

Mars 支持多种调度方式:多线程模式:Mars 可以使用多线程来在本地调度执行 Chunk 级别的图。

对于 Numpy 来说,大部分算子都是使用单线程执行,仅使用这种调度方式,也可以使得 Mars 在单机即可获得 tile 化的执行图的能力,突破 Numpy 的单机内存限制,同时充分利用单机所有 CPU/GPU 资源,获得比 Numpy 快数倍的性能。

单机集群模式: Mars 可以在单机启动整个分布式运行时,利用多进程来加速任务的执行;这种模式适合模拟面向分布式环境的开发调试。

推荐阅读