cuda - __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 设备内存吗?
解决方案
两个版本之间的区别在于 cuda 10.2 在调用 cudaRegisterFatBinary 之后需要 cudaRegisterFatBinaryEnd,而 cuda 10.0 不需要这个调用!!!
推荐阅读
- jquery - Jquery 滑块根据位置打开一个 HTML 页面
- node.js - Nodejs (express) 在生产中发布了两次
- angular - Angular 9:“为差异加载生成 ES5 包...”时出错:标识符直接在数字之后
- linux - 在信号处理程序中获取导致分段错误的寄存器
- mysql - Flutter 在未来的 builder 中获取 snapshot.data[1]
- version-control - 应用程序 1.2.1 和 2.3.5 版本之间的主要区别是什么
- vba - 使用 Application.Echo 方法时的错误处理
- react-native - 使用 React Navigation 为每个底部选项卡添加后退按钮
- python - numpy NPV 和 excel NPV 之间有区别吗?
- branch.io - 如何使用 Branch.io 将链接查询参数传递给深度链接