VS2019 CMake开发Win&Linux双平台CUDA+cuDNN

本文介绍了如何使用VS2019和CMake构建支持Win&Linux双平台的CUDA+cuDNN项目。内容包括CUDA和cuDNN的安装,CMake配置详解,以及CUDA卷积运算的测试代码,帮助开发者实现基于CUDA的AI算法部署。
摘要由CSDN通过智能技术生成

前言


在Nvidia的服务器GPU部署AI模型一定要使用TensorRT, 因为cuDNN远慢于TensorRT. 参考我最新的文章基于NvidiaGPU的AI模型结构优化:

最后说一点, 目前能够完美发挥出TensorCore性能的引擎, 据我所知只有TensorRT. 一些训练推理平台(比如pytorch)底层实际调用的是cuDNN来完成模型的推理. 但据我的经验来看, 相同参数的卷积cuDNN的实现要比TensorRT的实现慢3倍以上. 我也尝试过实现基于TensorCore的卷积, 但最终还是会比TensorRT慢20%多的样子.
————————————————
版权声明:本文为CSDN博主「Mr_L_Y」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/luoyu510183/article/details/117385131

 


最近的项目是在帮助服务器落地一些AI算法, 用到的Nvidia的GPU来推理, 主要会用到CUDA, cuDNN和TensorRT. 另外我也在开发独立的CUDA引擎来替换cuDNN, 由于cuDNN目前不支持Direct这种直接卷积算法, 只能使用GEMM,FFT和WINOGRAD这三种算法. 我的目前测试感觉这三种并不会一定会比直接卷积快, 另外cuDNN的TRUE_HALF_CONFIG , 并不会比float计算快, 这个和我用直接卷积的结论是相反的.

先讲解下结构关系:

CUDA是Nvidia GPU开发的基础工具集, 不但包含了.cu编译器nvcc, 还有一大堆好用的工具库 比如npp, nvjpeg, nvblas等等.

cuDNN是基于CUDA的卷积算法库, 里面有关于神经网络卷积计算的很多算子, 比如Tensor的+ - * /, 激活函数, 卷积函数等等.

TensorRT是基于cuDNN的一个面向模型应用库, 到这里不需要了解具体卷积的实现, 只需要把模型交给TensorRT用对应parser解析就可以进行推理或者训练.

或者结构如下:

模型 => TensorRT Parser => TensorRT cuDNN Wrapper => cuDNN ops => CUDA Kernel => GPU driver

本篇主要是作为编译入门讲解, 搭建一个基础的双平台CUDA+cuDNN项目. 

正文

准备工作

安装CUDA

首先需要用到的工具集主要是VS2019和它的CMake项目模板. 本篇属于进阶内容, 不讲CMake相关的基础, 可以去之前的文章看.

VS版本没有具体需要, CUDA我使用的是10.1版本, Driver 版本大于r418就行. CUDA10.2也是可以的, 11.0以后我目前还未测试. 

CUDA在官网下载https://developer.nvidia.com/Cuda-downloads?target_os=Windows&target_arch=x86_64&target_version=10&target_type=exelocal:

注意这里是最新版本,一般我也喜欢用最新版本, 但是由于服务器部署要求, 所以只能下载10.1版本,  需要点击下面这个链接去下载历史版本:

网址:https://developer.nvidia.com/cuda-toolkit-archive

Windows安装没啥好说的, 就是让你选择需要的组件, 这里提醒下, 同时会安装GPU Driver, 一般10.1的driver都

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值