首页 > 解决方案 > __cudaUnregisterFatBinary() (NVCC 10.2) 与 __cudaUnregisterFatBinary() (NVCC 10.0) 的 Cuda 应用程序段错误

问题描述

__cudaUnregisterFatBinary()(NVCC 10.2) 和 __cudaUnregisterFatBinary()(NVCC 10.0)在实现方面是否存在很大差异。

我的程序在__cudaUnregisterFatBinary()libcudart.so 内的 (NVCC 10.2) 处出现段错误,并且在 10.0 版本中运行良好。我正在从不同的 .cpp 文件中调用cudaUnregisterFatBinary()and cudaRegisterFatBinary()(我正在做一些函数插入 - 也就是包装 CUDA 调用)。而且我确保传递正确的参数(void **fatCubinHandle)。如果两个 nvcc 版本之间存在可能使我的应用程序失败的巨大差异,请考虑任何想法!

我剩下的唯一解决方案是禁用此调用,一旦进入 cudaUnregisterFatBinary() 包装器,我就在调用真正的 cudart 实现之前退出!这会影响 GPU 设备内存吗?

标签: cudanvidianvcc

解决方案


两个版本之间的区别在于 cuda 10.2 在调用 cudaRegisterFatBinary 之后需要 cudaRegisterFatBinaryEnd,而 cuda 10.0 不需要这个调用!!!


推荐阅读