磁盘内核缓存

@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。