磁盘内核缓存

CUDA 内置目标弃用通知

Numba 内置的 CUDA 目标已被弃用,后续开发已移至 NVIDIA numba-cuda 包。请参阅 内置 CUDA 目标弃用和维护状态

@cuda.jit 装饰器的 cache 关键字参数为 True 时,将启用基于文件的缓存。这在函数已在先前调用中编译过的情况下缩短了编译时间。

缓存维护在包含源文件的目录的 __pycache__ 子目录中;如果当前用户没有写入权限,则缓存实现将回退到特定于平台的、用户范围的缓存目录(例如在 Unix 平台上为 $HOME/.cache/numba)。

计算能力考量

为每种计算能力维护单独的缓存文件。加载缓存的内核时,将使用当前运行中首次启动该内核的设备的计算能力来确定要加载哪个版本。因此,在具有不同计算能力的多 GPU 系统上,内核的缓存版本仅用于一种计算能力,对于其他计算能力将发生重新编译。

例如:如果一个系统有两块 GPU,一块的计算能力为 7.5,另一块为 8.0,那么

  • 如果缓存的内核首次在 CC 7.5 设备上启动,则使用 CC 7.5 的缓存版本。如果随后在 CC 8.0 设备上启动,则会发生重新编译。

  • 如果在随后的运行中,缓存的内核首次在 CC 8.0 设备上启动,则使用 CC 8.0 的缓存版本。随后在 CC 7.5 设备上的启动将需要重新编译。

这一限制预计不会在大多数实际场景中造成问题,因为多 GPU 生产系统往往在每个节点内拥有相同的 GPU。