科学计算如何快速又高效?Mars+ 傲腾告诉你诀窍

来源:ob欧宝官网

阅读 24
发布时间 2021-10-18 06:12:20

  科学计算的过程往往伴随着庞大的数据量以及高计算力需求,因此也诞生了一些专为科学计算而发展的工具,如 SciPy。从诞生日起,SciPy 已经经历了二十年的发展,作为面向 Python 的开源科学计算库,SciPy 一直是科学计算的核心,并代表着 Python 的一个行业标准。在 SciPy 提供的基本算法中,涵盖了现有的数学软件分类系统,可以为微分、积分方程等计算提供完整流程,这也使得 SciPy 在数学、工程、科学计算等领域发挥着十分重要的作用。

  在整个 SciPy 体系中,Numpy 是各种工具的基础,它不仅提供了多维数组的数据结构,还支持 SciPy 体系中的各种计算。多维数组又叫张量,这个概念在近几年被广泛传播,它是深度学习的基础。张量拥有很多优势特性,相比于二维表 / 矩阵,张量能够创造更高纬度的矩阵和向量,因此其具有更加强大的表达能力。

  在 AI 创新的驱动下,掀起了一股机器学习和深度学习的热潮,张量的使用也逐渐增加。Numpy 由于简洁易用且性能强大,在企业中被广泛应用。不过,Numpy 还只适用于单机条件,对于大部分函数都无法进行并行化操作,也不能利用 CPU 的多核心处理能力来提高计算效率,从而使得 Numpy 不能突破现有的规模瓶颈。

  但值得注意的是,分布式计算引擎在科学计算领域并不能发挥太大作用,其原因就是前者的诞生与后者没有必然关系,而分布式计算引擎的上层接口不匹配,导致科学计算任务很难用传统的 SQL/MapReduce 编写。且在执行过程中,计算引擎本身没有对科学计算进行针对性优化,使得后者的计算效率同样难以满足行业发展需求。

  也是基于这些特性和独特的优势,Mars 支持多种调度方式,如多线程模式、分布式、单机集群模式,这保证了 Mars 的扩展性,也让其可以支持更多科学计算的场景。与 Numpy 相比,Mars 可以看成是包含粗粒度图与细粒度图的计算图,给定一个张量,Mars 会将其在各个维度划分为小的 chunk,然后对这些 chunk 进行处理,将其调度到多核或者分布式集群中来执行。

  值得注意的是,尽管在 Mars 矩阵运算中输入和输出的数据量并不大,但在 chunk 之后的运行过程会产生大量的中间过程,在上图中,红色框内部的就是产生的中间过程。毫无疑问,这些过程的产生会占用大量内存资源。为此,阿里巴巴在 Mars 中加入了数据溢出控制手段,将暂时不用或用不到的数据放到磁盘中存储,防止内存溢出,保证计算安全。

  英特尔傲腾持久内存拥有两种操作模式,内存模式和应用直接模式(AD),前者适用于大内存容量,后者具备非易失性,应用可直接在内存中进行运算,大幅降低堆栈中的复杂程度。不仅如此,英特尔傲腾持久内存可以提供 128G、256G、512G 容量,与传统 DRAM 相比每 GB 的内存成本也更低,可以满足 Mars 大规模应用的需求。

  Mars 需要满足不断多样化的科学计算环境,为此,英特尔对傲腾持久内存进行了两个调优,一个是内存启用 Snoop for AD 模式,一个是 Plasma 在持久内存中实现共享。前者可以保证傲腾持久内存保持较高的 I/O 水平,后者让内存资源应用更为合理,从而有效提升 Mars 的计算性能。

上一篇:CDA大数据分析师周末班 下一篇:24 日图灵独家大数据:榜首能否坐稳?