概述

Mars tensor 对应 Numpy ndarray,实现了 Numpy ndarray 接口的子集。在执行中,Mars tensor 将一个大张量切分成很多小块,并用有向图描述块之间的计算。这使我们可以在大于内存的张量上进行计算,并利用多核或分布式集群的能力。

以下是 Mars tensor 所支持 Numpy 接口子集的概述。

  • 算术和数学函数:+-*/explog 等。

  • 沿坐标聚合(sum, max, argmax, 等)。

  • 大多数的 数组创建方法emptyones_likediag 等)。更重要的是,Mars 不仅支持在 GPU 上创建数组/张量,还支持创建稀疏张量。

  • 大部分的 数组操作例程reshaperollaxisconcatenate 等)

  • 基本索引 (通过整数、切片、添加新维度和省略号进行索引)

  • 高级索引 (不支持同时使用布尔数组索引和整型数组索引)

  • 元素运算的 通用函数

  • 线性代数函数,包括乘积(dotmatmul 等)和分解(choleskysvd 等)

然而,Mars 尚未实现 Numpy 的所有接口,时间限制和难度是主要原因。我们真诚地欢迎社区的任何贡献。未实现的主要功能如下:

  • 形状未知的张量不支持所有操作

  • np.linalg 只实现了一小部分。

  • Mars 张量没有实现 tolistnditer 这样的接口,因为迭代或者循环处理巨大的张量非常低效。