每次构建和运行我的CUDAfy代码时,加载模块并进行翻译都需要相当长的时间.有没有办法减少翻译和加载时间?
如果GPU代码没有被更改,可能不希望总是调用Cudafy.您可以使用序列化来缓存Cudafy模块.
CudafyModule km = CudafyModule.TryDeserialize(); if (km == null || !km.TryVerifyChecksums()) { km = CudafyTranslator.Cudafy(); km.Serialize(); }
TryDeserialize方法将尝试在当前目录中查找与调用类型相同的文件名的*.cdfy文件.如果找不到或失败,则返回null并尝试创建一个新模块.如果它不为null,则检查高速缓存模块是否引用它的相同版本的.NET代码.要执行此操作,请调用TryVerifyChecksums.如果返回false,则表示缓存的模块已过期,建议使用新模块.