初识Julia语言,julia语言( 四 )


然而,尽管 GPU 很长一段时间都在 CUDA 等软件系统发力,但这些库通常不会扩展到新的非 GPU 加速器,为这些加速器开发软件仍然是一大挑战 。2017 年,谷歌宣布他们将通过云服务向大众提供他们专有的 TPU 机器学习加速器 。最初,TPU 的使用局限于根据谷歌 TensorFlow 机器学习框架编写的应用 。
幸运的是,2018 年 9 月,谷歌通过底层 XLA(Accelerated Linear Algebra)编译器的 IR 开放了 TPU 的访问权限 。这个 IR 是一个通用的优化编译器,用于表达线性代数基元的任意计算,因此为使用 TPU 的非 TensorFlow 用户以及非机器学习工作负载提供了良好的基础 。
在本文中,我们介绍了使用这个接口编译通用 Julia 代码的初步工作,它们可以进一步访问谷歌云的 TPU 。这一方法与 TensorFlow(Abadi et al., 2016)采用的方法形成对比,后者没有编译 python 代码,而是先用 Python 构建一个计算图,然后再对这个计算图进行编译 。它在美学上类似于 JAX(Frostig et al., 2018),JAX 的目标是通过跟踪和 Offload 高级数组运算来 Offload Python 本身编写的计算 。
【初识Julia语言,julia语言】然而重要的是,我们不依赖于追踪,而是利用 Julia 的静态分析和编译能力来编译整个程序,包括传递到设备端的所有控制流 。值得一提的是,我们的方法允许用户在编写模型时充分利用 Julia 语言的表现力 。这些表现力主要体现在一些高级特征上,如多重派发、高阶函数和现有库,如微分方程求解器(Rackauckas

推荐阅读