Caching 我的CUDA JIT缓存始终远低于CUDA_缓存_最大大小

Caching 我的CUDA JIT缓存始终远低于CUDA_缓存_最大大小,caching,cuda,Caching,Cuda,我有一个在CUDAV7.5上运行的OpenCL应用程序 这个应用程序有很多大内核。我正在将CUDA_CACHE_MAXSIZE设置为可能的最大值4294967296,即4GB。但是,缓存目录中存储的文件的总大小永远不会超过~307MB。看起来缓存条目正在被添加/逐出(我看到总文件大小有一些小变化,我的应用程序在查询最近的内核时肯定会命中缓存)。它的行为好像有一些缓存大小限制低于CUDA_cache_MAXSIZE,可能是由opencl驱动程序强制执行的 我想知道是什么原因造成的,我是否可以访问4

我有一个在CUDAV7.5上运行的OpenCL应用程序

这个应用程序有很多大内核。我正在将CUDA_CACHE_MAXSIZE设置为可能的最大值4294967296,即4GB。但是,缓存目录中存储的文件的总大小永远不会超过~307MB。看起来缓存条目正在被添加/逐出(我看到总文件大小有一些小变化,我的应用程序在查询最近的内核时肯定会命中缓存)。它的行为好像有一些缓存大小限制低于CUDA_cache_MAXSIZE,可能是由opencl驱动程序强制执行的


我想知道是什么原因造成的,我是否可以访问4GB的完整缓存大小。

很抱歉,我花了这么长时间才做出响应。我刚发现这是libcuda的一个bug。我将很快提交修复

目前,解决办法是将
CUDA\u CACHE\u MAXSIZE
设置为2Gb-1(
2147483647
)。将其设置为2Gb和4Gb-1之间的值可能会导致非常高的缓存大小,将其设置为4Gb会导致缓存大小为256Mb,这是自R334以来的默认缓存大小,而不是如前所述的32Mb


我希望此解决方案能对您有所帮助。

是什么让您认为您达到了缓存限制?为什么你认为你的应用程序应该使用更多的缓存?该应用程序在启动时花了很长时间编译内核。从日志中可以看出,当它从文件系统缓存加载内核而不是从头开始编译内核时(正如您所期望的那样),速度要快得多。这就是为什么我想使用更大的缓存,以加快启动速度。是什么让我觉得我达到了缓存限制?在运行同一应用程序的多个服务器上,缓存文件的大小在磁盘上增长到大约300M,但随后不再增长。存在缓存活动-在这一点之后,它会从缓存中写入和检索内核。但是缓存条目的文件大小/数量没有进一步增长,这让我觉得旧的条目正在从缓存中被逐出。