Rust in Everything
基于 tenferro-runtime 0.8.0

导读

动手对照之前,先讲清楚两件事:这一卷的数字怎么来,以及什么时候该用 tenferro。

  1. 怎么读这一卷:锁定的版本;一对对照程序怎么跑、怎么逐个数比较;f(x) = Σ sin(x)·x² 的梯度两边最大差 4.4e-16(1 个 ulp),来源是 sin / cos 的实现和 jit 融合出的 FMA;tenferro 换线程数,reduce_sum 和 SVD 的末位也会变;容差怎么定;三条主线每一步落在哪一页。
  2. 什么时候用 tenferro:20 步 TRG 求值加梯度,JAX jit 222–253 ms,tenferro 分段 8 线程 441–472 ms、单线程 913–948 ms;交付物是 21.3 MiB 的二进制对约 409 MiB 的 Python 环境,进程内到第一个梯度约 0.5 ms 对约 0.28 s。也写该留在 JAX 的情况:没有 vmap、lax.scan、随机数和 pytree,求导变换在长图上随深度指数增长,Mac 上没有 GPU。
flowchart TB
  read[怎么读这一卷] --> ver[锁定版本]
  read --> pair["一对对照程序"]
  read --> tol["对得上的标准"]
  read --> lines[三条主线]
  why[什么时候用 tenferro] --> speed["TRG 与小函数的速度"]
  why --> ship["体积与冷启动"]
  why --> lack["JAX 有它没有的"]

💬 关联讨论

发起讨论
加载中...