CUDA Driver API应用分发所需文件及与Runtime API的差异对比
CUDA Driver API应用分发文件及与Runtime API的分发差异
一、CUDA Driver API开发的应用需随附分发的文件
- 主程序可执行文件:编译生成的程序主二进制文件
- CUDA Kernel文件:如果开发时没有将Kernel代码嵌入主程序,需要随附预编译的
.cubin(针对特定CUDA架构编译的二进制Kernel文件)或.ptx(CUDA中间表示代码,支持目标设备JIT编译)文件 - 自行引入的第三方依赖库:如果程序调用了非系统、非CUDA驱动自带的第三方动态链接库,需要随附对应版本的库文件
注意:CUDA Driver API依赖的核心驱动库
libcuda.so(Linux平台)/nvcuda.dll(Windows平台)由NVIDIA官方显卡驱动自带,严禁自行分发,仅需要求目标设备预装版本不低于开发所用驱动版本的NVIDIA显卡驱动即可。
二、与CUDA Runtime API应用的分发差异
两类应用的核心共同点是都不需要分发NVIDIA驱动自带的驱动组件,仅要求目标设备预装符合版本要求的NVIDIA显卡驱动,二者的分发差异如下:
- CUDA Runtime库依赖差异:Runtime API默认依赖
libcudart.so(Linux)/cudart64_xxx.dll(Windows,xxx对应CUDA大版本号),该库不属于显卡驱动自带组件:如果采用动态链接CUDA Runtime的编译方式,必须随程序分发对应版本的CUDA Runtime库;如果采用静态链接方式可以不用分发,但会增大主程序体积。Driver API完全不依赖CUDA Runtime库,无需分发该类文件。 - Kernel分发逻辑差异:Driver API的Kernel代码默认和主程序分离,需要开发者手动嵌入主程序或单独分发
.cubin/.ptx文件;Runtime API的Kernel会在编译阶段自动嵌入主程序二进制,不需要单独分发Kernel文件。 - 环境依赖要求差异:Driver API应用仅要求目标设备的驱动版本符合要求即可,不需要用户安装完整CUDA Toolkit;动态链接Runtime的应用如果没有随附CUDA Runtime库,要求用户提前安装版本完全匹配的CUDA Toolkit才能运行。
内容的提问来源于stack exchange,提问作者skm
相关产品推荐
相关产品推荐

