EnzymeAD/Reactant.jl

Optimize Julia Functions With MLIR and XLA for High-Performance Execution on CPU, GPU, TPU and more.

解决的问题

Reactant 简化了在 CPU、GPU 和 TPU 上进行高性能执行的 Julia 函数编译过程。它消除了手动优化或复杂设备特定代码(如 CUDA.jl)的需要,通过将 Julia 代码自动转换为可通过 XLA 在硬件加速器上进行优化和执行的格式。

工作原理

Reactant 使用追踪系统来捕获 Julia 函数的执行。它将函数转换为 MLIR(多级中间表示),并应用优化,包括通过 EnzymeMLIR 实现的自动微分。

其核心使用两种数组类型:ConcreteRArray(设备上的实际数据缓冲区)和 TracedRArray(在编译期间用于表示数据而无需知道其实际值)。当使用 @compile 宏编译函数时,Reactant 会捕获初始执行的控制流模式并消除类型不稳定性,为目标设备创建静态可执行文件。

适用人群

希望在硬件加速器(GPU/TPU)上以高性能运行 Julia 代码且付出最小努力的开发者和研究人员,特别是需要自动微分进行机器学习或科学计算的用户。

主要亮点

  • 硬件无关:通过 XLA 支持 CPU、GPU 和 TPU 执行。
  • 自动微分:集成 EnzymeMLIR 实现高性能梯度计算。
  • 零依赖 GPU:无需直接依赖 CUDA.jl 即可实现 GPU 执行。
  • 支持递归数据:可将复杂、递归的数据结构或共享对象转换为 RArray。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目