国产GPU绕不开的CUDA生态

国内gpu厂家或许尝试,摸着英伟达过河。
近日,摩尔线程在北京发布多款软硬件新品,包括新一代gpu“春晓”、面向个人电脑的消费级显卡mtt s80和服务器计算卡mtt s3000、一体化计算设备“mccx元计算一体机”,以及开发套件、数字人解决方案等。gpu“春晓”做为本次发布会的核心产品受到广泛关注。
“春晓”是摩尔线程的第二颗gpu,也是摩尔线程首颗面相国内消费级市场发售的gpu,它强调游戏、元宇宙与渲染用途,最重要的是,这个gpu支持英伟达cuda生态。
其实经常关注显卡的同学总能从英伟达的发布会上听到cuda这个词,例如最新的rtx3060有拥有多少颗cuda核心,某某游戏首发即支持cuda生态等。作为显卡领域的高频词汇,很多人好奇cuda到底是什么?为什么国产显卡会用到英伟达的技术?本文将带你了解即熟悉又陌生的cuda。
cuda是什么?
cuda(compute unified device architecture,统一计算架构)是由英伟达所推出的一种集成技术,是该公司对于gpgpu的正式名称。通过这个技术,用户可利用nvidia的gpu进行图像处理之外的运算,cuda也是首次可以利用gpu作为c-编译器的开发环境。简单来说,程序员平时如果不使用特定框架都是针对cpu进行编程的,cuda是全球最大gpu厂商英伟达推出的针对gpu的编程的架构。
2006年,英伟达发布了cuda,它提供了gpu编程的简易接口,程序员可以基于cuda编译基于gpu的应用程序,利用gpu的并行计算能力更高效的解决复杂计算难题。在cuda发布之前,程序员需要到显卡内核并利用机器码进行编译,编程过程相当繁琐也很困难。cuda的发布,相当于将较为复杂的底层代码封装成了一个个简单接口,使用时直接调用,其在gpu编程领域的革命性不亚于c、python、php等高等编程语言的发明。当然,cuda本身也是兼容c语言的,其本身就类似c语言,这可以帮助程序员更快速上手cuda。现在主流的深度学习框架大多都基于cuda进行gpu加速运算。
cuda工作流程  图源:csdn
从硬件角度看,英伟达会经常宣传自家显卡拥有的cuda core数量。cuda core其实就是英伟达的流处理器,也就是fp32计算单元,同样的结构在amd的gpu内叫做sp。与cuda core相对的还有tensor core张量核心,从字面上就能看出该核心主要针对深度学习中的tensor计算设计。tensor计算就是混合精度计算,即在底层硬件算子层面用半精度(fp16)进行输入和输出,使用全精度(fp32)进行计算放置丢失过多精度的操作,这个底层硬件就是tensor core。cuda 9.0引入了一个“warp矩阵函数” c++语言api,以便开发者可以使用gpu上的tensor core。
cuda core  图源:知乎
cuda与 gpgpu的概念一脉相承。gpu就是传统意义上的显卡与图形加速卡。随着人工智能产业爆炸式增长,导致计算复杂化和算力不足,cpu并行计算能力远不如gpu,使得gpu在通用计算领域逐渐领先,为了进一步专注通用计算,gpgpu便应运而生。gpgpu与cuda之间关系十分密切。gpgpu其实是去掉了图形显示功能的gpu,它将全部能力都投入到通用计算上,cuda的出现让gpu真正实现更广泛的通用计算。cuda与gpgpu也直接推动了ai与深度学习的发展与产业革命。
为什么要兼容cuda?
当我们了解了cuda是怎么回事,也就方便解释为什么国产gpu需要兼容cuda。
前文提到,目前世界上的主流深度学习架构都在使用cuda,其主要原因就是深度学习的重要载体—gpu市场已被英伟达占领大半。随之而来的,就是市面上绝大部分gpu相关软件都是用cuda开发,国产gpu兼容cuda可以同时“继承”英伟达打造好的软件生态,也有更多资料可供学习,这对于蹒跚起步的国产gpu行业来说,减轻了不少开发难度,也降低了推广压力。
从开发角度分析。业内gpu工程师称目前gpu市场可以笼统的分成两大块,分别是计算和渲染。此前国内gpu厂商通常专注与计算方面的研发,也有少部分渲染产品问世,最近摩尔线程发布的gpu强调其具有强大的渲染能力。然而渲染赛道难度较大,其计算复杂度更高,除了通用计算,还包图形渲染、前后端着色器配置、物体几何属性等需要处理。目前世界上标准api主要是cuda与opencl,cuda是英伟达系统架构,opencl则主要被amd采用。采用标准化的api接口,无论是cuda还是opencl,都可以极大减少开发渲染类gpu的前提投入,后期可以再做相应的优化,这样可以降低与cuda等 “地位”稳固的gpu生态直接竞争的难度。
从市场推广角度看。英伟达的cuda生态已经问世多年,与下游软件、驱动厂家已经有了深度合作。大部分厂家对于gpu生态的观点,往往是不在乎gpu本身好与坏,而是关注gpu好不好用、能不能用。好不好用的评价较为主观,但采用现成的英伟达cuda接口进行编程,可以规避大多数未知风险,多数初创企业开发gpu软件采用统一接口也能增加开发稳定性,降低人才招聘难度。所以,构建自己的gpu生态要慢慢起步,一味求快推广自家生态只会把风险转嫁给更多下游开发者。
国产gpu要挑战cuda吗?
cuda本身涵盖了多个技术领域,其开发与后续更新都与英伟达自家gpu高度绑定,即使全部开源,第三方厂家也难以完美移植到自家gpu上。从另一个角度看,英伟达在gpu领域的垄断地位主要通过cuda平台上的软件生态实现。国产gpu若想真正做到与英伟达一较高下,cuda生态是绕不开的最终boss。
知乎用户对英伟达gpu生态做出分析。国产gpu厂商若无法做到与英伟达的架构、封装技术、驱动优化等都保持完全一致,cuda生态就一定不会完美适配其他显卡。做到完全移植,cuda生态内的各种库以及套件等都需要做相应调试,工作量太大。
此外,cuda也并不是一成不变的。每隔一代gpu,cuda架构就会发生很大变化。每个驱动小版本推送,cuda都会做出部分微调。国产gpu如果完全基于cuda生态进行开发,那它的硬件更新将完全绑定英伟达的开发进程,这样就失去了主动性,且永远慢人一步。
不过内开发者也不用悲观。cuda本质是一个计算结构,甚至是一个理念,它并不需要英伟达的完全授权。我们可以参考英伟达的有力竞争者amd。amd的生态虽然基于开源生态opencl开发,但amd也制作了hip的编程模式,与cuda相比,其开发函数甚至可以进行直接替换。如果说英伟达在gpu领域是摸着石头过河的,那amd就是摸着英伟达过河。国内gpu厂家或许可以参考amd发展模式,前期借鉴可以是后期创新的基础。
写在最后
cuda作为英伟达垄断gpu领域的关键力量,是国产厂商必须面对的挑战。cuda在诞生之初,为人们在深度学习与ai领域攻坚克难立下汗马功劳,但如果它被用来钳制新力量的发展,cuda也将成为英伟达的马奇诺防线。


如何创建PDF
华为开发者大会2020 HarmonyOS热门话题抢先看
Top 10!3D打印领域最具影响力厂商盘点
中国电机智造与创新应用峰会现场报道
发光细菌毒性分析仪可以检测什么,它有哪些特点
国产GPU绕不开的CUDA生态
生存高于一切 HTC断臂求生
扎克伯格讽苹果定价高让穷人难买
中国电子元件十二五规划出炉
Ubuntu移动操作系统开放下载 首批支持Nexus设备
iPad商标纠纷背后:八大债权银行为唯冠撑腰
小米6下周发布:除了骁龙835,还有四大亮点抢先看
毫米波雷达技术测距原理及频段选择
ThinkPad X1 Nano助力打造极致私密办公环境
megaAVR 0系列上的FreeRTOS入门指南
大众集团与微软深入合作,加速自动驾驶发展
常用的碳膜电阻器规格1/2W 1K-180K瓷棒碳膜电阻
苹果的MacBook Pro将在2021年搭载Mini LED发布
相同的价格,该买电动汽车还是纯燃油性能车
DC/DC升压IC常见升压芯片电路设计选型及汇总