做人人都能用得起的GPGPU
作者 | 范文婧
编辑 | 赵健
11月中,上海交通大学的景乃锋老师收到出版社编辑的一条消息,“景老师,这本书考不考虑再版一次?”
距离《通用图形处理器设计》出版才过去半年时间,这已经是编辑第三次找来了。点开这本书在京东图书的自营页面,已经有超过500条评论,好评度100%。
这本“硬核”技术类书籍获得了那么多关注,除了内容丰富扎实之外,更重要的是“话题”。自从2019年之后,芯片就成为中国最具有国民级热度的硬核话题,而本书是国内第一本深入介绍GPGPU架构和芯片设计的教材。
这本书是上海交通大学先进计算机体系结构实验室主任梁晓峣教授与景乃锋老师等共同编撰的。长期奋战在GPGPU科研的第一线,他们敏锐地观察到,当前国内高校大多只讲授GPGPU的应用,如AI计算、计算机视觉等,却几乎没有开设关于GPGPU硬件架构设计的课程,甚至连一本合适的参考书也没有。
经过一年多的努力,《通用图形处理器设计》顺利出版,内容包括了GPGPU的架构原理、芯片设计理念、软件栈的构成等丰富的内容,可以促进读者更深入地思考 GPGPU 架构设计领域的核心要素问题。
尽管初版大获好评,但梁晓峣教授的团队并不止于此,他们对推动中国的GPGPU产业发展还有一个更长远的计划。
今年8月,团队正式对外发布了自研开源GPGPU平台“青花瓷”。
开源硬件并不像开源软件那么常见,历史上的成功案例也不多。“公益、中立、坚持”是类似项目通常会由学术组织发起的原因。从有这个想法,到正式发布“青花瓷”,近三年的时间里梁教授和团队成员反复思考了许多,也尝试了许多。
1. 为“国产化”出一份力:硬件开源可以一试
2019年至今,一大批GPGPU芯片公司在中国成立。
多股力量促使这一壮景的发生。一方面,伴随着贸易摩擦,国产化的趋势越发明显;另一方面,国家也越来越重视投资真正的“硬科技”企业。与此同时,科创板开市,让需要长时间积累的科技企业,更容易进入二级市场,增加了资金流转的可能性。
这些新成立的公司有一个明显特征:应用领域多为人工智能。GPU本来是图形处理器,但由于内部结构的特性,常常被用在人工智能和通用科学计算中,形成了一类新的芯片形态GPGPU,中文叫通用图形处理器。
这些公司之所以融资多、估值高、发展快,是因为GPGPU的设计难度很高,我国面临着被“卡脖子”的困境。现如今全球市场被国际巨头英伟达和AMD两家公司垄断,情况持续了多年,让这两家公司积累了强大的生态并形成了行业壁垒。
要想打破这样的局面,不仅需要硬件设计更加精进,更需要在软件上发力。这是因为硬件功能的发挥要通过具体的应用任务来体现,这些都需要依靠软件来完成。梁教授告诉「甲子光年」,“软件能力积累起来比较缓慢,需要大量的人力和时间。像是英伟达这样团队结构健康的公司,软硬件工程师比例要达到5:1、6:1,甚至可以到10:1。”
目前市面上的GPGPU初创公司,往往以“兼容”英伟达CUDA生态为设计原则,让客户的切换成本减少。但是,“兼容”只是一个模糊的说法,它希望客户在更换芯片的时候能够直接运行一些现有的场景。这需要技术,也需要经验,更需要长期的积累。
事实上,英伟达芯片所能覆盖的场景少说也有数千个,大多数初创公司在推出新品硬件的时候只能兼容其中的几个。但这已经需要花费很大精力,可见软件生态的搭建需要漫长的时间。
于是梁教授团队有了另一个想法——开源。
梁教授坦言,“思考要不要做这件事,我们都反反复复花了很长时间”。
如果要做开源,要做哪些部分的开源,未来的开发周期与所需时间、人力投入是否一个高校的实验室能够承担得了,都得提前想清楚。“促使我们做决定的契机,主要还是国产化的趋势。在GPGPU领域我们要追赶的这个生态实在太强大了。仅凭初创公司的实力很难与之对抗,或许可以借助开源社区的力量,所谓‘众人拾柴火焰高 ’。”
2. 开源GPGPU平台“青花瓷”
“硬件开源”听上去是一件不可思议的事情。的确,由于硬件拥有物理特性,调试难度大、制造成本高,加之硬件设计知识的普及度也不如软件那么高,过去很少有硬件开源成功的案例。
但是最近广受关注的CPU领域的硬件开源项目RISC-V,已经在很大程度上证明了硬件开源的可行性。GPGPU领域的开源平台同样值得期待。
关于开源GPGPU平台“要怎么做、做哪些”,团队也经历了一些探索。最终大家决定,既然要解决的是GPGPU软件生态发展缓慢的问题,那么团队就应该专注于更紧迫也更有挑战的软件部分,而不过多地涉及具体的硬件实现。
在项目官网(gpgpuarch.org)上,团队对项目具体包含的内容做了介绍。“通过提供基础的指令集、硬件架构、模拟器来描述实现一种流行的、先进的GPGPU设计”。目前,在学术界已经有几个开源GPGPU项目,有的仍然采用较老的指令集或是中间语言进行实现,有的则是基于RISC-V CPU指令集进行改进和扩展来实现GPGPU的功能。而“青花瓷”则是以工业界近年来主流的GPGPU架构和指令为基础,能够独立完整实现先进的GPGPU的功能。
青花瓷架构可以提供灵活的可编程性并保持程序员的编程习惯,最大程度降低软件开发难度。目前已开源的GPGPU功能模拟器,提供了CUDA运行时以及设备端的Warp级功能仿真,能够运行包含三十个通用并行程序的基础测试集。后续架构将持续优化,更新模拟器,以支持更多的应用程序和更为广阔的应用场景。
上海交通大学助理研究员李钢表示,“我们想做的是一个独立完整的GPGPU架构和指令设计,而不依赖于现有RISC-V CPU开源指令,这样才能更完备地打造和融入原生的GPGPU生态 ,从而与现有的各种CPU系统无缝衔接。为此我们精心设计了几十条服务于GPGPU程序的专用指令,同时架构上也融入了业界最新的包括Tensor Core的专用单元。”
谈及开源平台未来的价值,梁教授团队认为目前学术界和科研机构对GPGPU的技术有极大的需求,业内有很多公司也需要GPGPU,且希望自研。比如一些对海量数据和人工智能计算要求较高的企业,如互联网公司、新能源汽车厂商、自动驾驶公司、人工智能企业等都在自研芯片。
这些厂商自研芯片的内在需求,不仅仅是为了推进国产化、开源节流,更是为了让芯片更好地服务于自身业务。未来如果这些企业能够使用开源平台,则能在硬件功能实现上变得更为灵活,软件应用生态上变得更加强大,产品设计成本上变得更加节约。
当然,初创的芯片公司也有机会成为“青花瓷”平台潜在的使用者。对于这些公司来说,自研的成本高昂,而且合格的人才也很难招募,用开源架构作为起点是很好的选择,可以站在别人肩膀上起步。
上海交通大学科研助理刘子钊认为,一些专注于设计CPU或NPU的公司,如果希望拓展并融入GPGPU的功能,也会愿意尝试开源架构。
3. 育人:教学中的开源实践
青花瓷开源GPGPU项目由上海交通大学先进计算机体系结构实验室发起,经过很长一段时间的计划与筹备,团队将过去十多年的在GPGPU领域的积累全部融入到开源项目当中。
刘子钊介绍,筹备这个项目的时候,疫情刚刚开始,团队的沟通都是通过线上会议进行的。
于是,线上办公变成了常态。“我们一般会将学生分成几个小组,负责人会为每个人布置任务,一般是实现某个具体的功能。学生自己安排时间,规划工作进度,也可以在想讨论的时候直接邀请同学和老师进行讨论。”
同学们的参与度都很高,“我们有一个会议号不变的共同会议室,经常会出现负责不同任务的同学为了解决问题相互邀请,不间断地使用会议室的情况,讨论几个小时也是常有的现象。
但在项目开始时,情况并没有那么顺利,大多数学生都比较抵触与硬件相关的代码编写。
“他们可能更喜欢算法和应用类的工作,觉得那样的项目经验对就业更有帮助。而作为老师,向学生传递这份硬科技工作重要性和价值,也是我们的职责”。
逐渐地,同学们从项目中获得了知识和经验,也感受到了价值。于是变得热情起来,常常由一个任务,延展到这个任务背后的逻辑和原理,进行自学并互相分享。
不同于过去几年在许多互联网公司里的“卷”,学生是发自内心地喜欢这个项目,是主动进取,而不是“卷”。
通常商业化公司里的技术划分非常细,是‘一个萝卜一个坑’。在一家公司参与两代以上的芯片设计后,细分流程相关的知识就都熟悉了,但在公司里的员工是很难随意调换岗位的。梁教授认为,对比公司研发与学校科研的差异,“学术上可以更有创造性,学校不限制科研人员和学生在哪个领域发展,大家都可以做自己想做的研究。”
更重要的是,和学生的互动本质与“开源生态”的发展是一致的。一个架构想要吸引更多人来用,关键是让使用者感兴趣。用户学习、使用之后,还会产生新的创意和灵感,于是带动更多社区的人一起来参与和讨论,在开源平台形成新的技术趋势和发展方向。
这几年最大的变化莫过于工程师改变了过去线下办公的传统,已经习惯了线上工作。“我们搞开源的这群人天天在网上交流,线下已经很久没有见过面了,甚至于很多人都只是网友素未谋面。”某种意义上讲线上办公和“开源”的特质也是契合的:随时、随地。
4. “做人人都能用得起的GPGPU”
做开源项目是一个不断累积的过程,需要经历持续的投入和漫长的积累。企业往往更关心如何盈利和变现,很难专注地在一个开源项目中持续的奉献和无偿的投入。
或许这也是为什么开源项目往往都起源于公益性组织,尤其是高校和科研机构。梁教授表示,“我们的目的是帮助产业做大做强,所以我们只专注于做软件平台和生态,我们不会真正去开发硬件,更不会生产一块芯片。任何芯片公司都可以借助‘青花瓷’开源平台的力量,更快的获得丰富软件生态的支持从而使产品迅速落地。”这样“赋能”而非“竞争”的心态是“青花瓷”平台建设的初心。
由学校发起的开源项目具有前瞻性、公益性、开放性和自主性的特点,是一个中立的选择。而开源项目只有更“中立”,才有可能形成合力,吸引更多机构参与。
“我们发起的项目,希望能够不畏惧行业的周期性波动,长期存在,创造更多合作互助的可能。”,梁教授补充道,“我们没有赚钱的期许,也没有盈利的要求,只要能帮助行业向前发展,我们的目的就达到了”。
许多科技领域的专业人士都认为,越是在技术难度高的领域,行业的集中度也会越高。像是CPU、GPGPU这样难度较高的芯片,一般会有两家公司垄断超过95%的市场份额。通过开源架构将核心的技术和知识分享给全行业,赋能千家万户才有可能打破长期以来业内存在的寡头统治格局。
更进一步,地缘政治所带来的不确定性在这几年有增无减,“国产化”的趋势势在必行。利用开源及开源生态所创造的芯片,就有可能解决“卡脖子”的困境,“做人人都用得起GPGPU”。
梁教授团队在项目之初就制定了一个“十年计划”,希望通过十年的努力能够打造属于中国的GPGPU生态。这是团队的一种态度,“我们要做开源、要做属于中国的生态,就千万不能有急功近利的心态,细水长流、愚公移山,抱着一颗平常心去做,去坚持”。
如所有硬科技领域,如艰苦的科研,厚积而薄发。