cudnn和cuda的关系
2023-04-10 · 百度认证:IT168官方账号,优质数码领域创作者
关注
展开全部
CUDA是C语言在GPU编程上的的拓展包,CUDNN是封装了卷积等算子的库,不是一个层面的东西。
这二者的关系,CUDA可以用来实现cudnn定义的各种接口,早期CUDNN应该内部是用CUDA实现的,但随着英伟达软件生态的发展,CUDNN团队一定会选择用更底层,更靠近硬件,更难用的工具来构建Kernel,比如PTX,比如直接写汇编(SASS)。不信的话可以自己试着用CUDA实现CUDNN的接口,看看性能能差多少。当然能把CUDA写好的人想必都了解CUDA的局限。
二者在生态里面的位置。最开始CUDA可以说是英伟达用来打天下的东西,很大程度靠这玩意儿确立了自己在高性能计算尤其是神经网络高性能计算的地位。因为CUDA在暴露硬件特性和保持软件通用性的矛盾中找到了一个精巧的,大多数人都可以接受的平衡。但随着这几年技术的发展,情况又发生了些变化,CUDA还是肩负着软件生态通用性的重任,而高性能的任务,更多地需要由CUDNN,CUBLAS这些高性能软件库来承担。在英伟达的构想中,成熟的算子,比如卷积,比如全联接,用户可以使用库直接获得最优性能,而对于新的算子或者是每个用户独有的算子,用户还是可以用CUDA自己来相对简单地实现一个性能可以接受的版本。最后通过TensorRT,TensorFlow这样的框架把这二者衔接起来。
这二者的关系,CUDA可以用来实现cudnn定义的各种接口,早期CUDNN应该内部是用CUDA实现的,但随着英伟达软件生态的发展,CUDNN团队一定会选择用更底层,更靠近硬件,更难用的工具来构建Kernel,比如PTX,比如直接写汇编(SASS)。不信的话可以自己试着用CUDA实现CUDNN的接口,看看性能能差多少。当然能把CUDA写好的人想必都了解CUDA的局限。
二者在生态里面的位置。最开始CUDA可以说是英伟达用来打天下的东西,很大程度靠这玩意儿确立了自己在高性能计算尤其是神经网络高性能计算的地位。因为CUDA在暴露硬件特性和保持软件通用性的矛盾中找到了一个精巧的,大多数人都可以接受的平衡。但随着这几年技术的发展,情况又发生了些变化,CUDA还是肩负着软件生态通用性的重任,而高性能的任务,更多地需要由CUDNN,CUBLAS这些高性能软件库来承担。在英伟达的构想中,成熟的算子,比如卷积,比如全联接,用户可以使用库直接获得最优性能,而对于新的算子或者是每个用户独有的算子,用户还是可以用CUDA自己来相对简单地实现一个性能可以接受的版本。最后通过TensorRT,TensorFlow这样的框架把这二者衔接起来。
威孚半导体技术
2024-08-19 广告
2024-08-19 广告
威孚(苏州)半导体技术有限公司是一家专注生产、研发、销售晶圆传输设备整机模块(EFEM/SORTER)及核心零部件的高科技半导体公司。公司核心团队均拥有多年半导体行业从业经验,其中技术团队成员博士、硕士学历占比80%以上,依托丰富的软件底层...
点击进入详情页
本回答由威孚半导体技术提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询