Redian新闻
>
从零开始手搓GPU!照着英伟达CUDA来,只用两个星期!

从零开始手搓GPU!照着英伟达CUDA来,只用两个星期!

公众号新闻

点击下方卡片,关注“CVer”公众号

AI/CV重磅干货,第一时间送达

点击进入—>【Mamba/扩散/多模态】交流群

添加微信:CVer5555,小助手会拉你进群!

扫描下方二维码,加入CVer学术星球可以获得最新顶会/顶刊上的论文ideaCV从入门到精通资料,及最前沿应用!发论文/搞科研/涨薪,强烈推荐!

转载自:机器之心 | 编辑:泽南、小舟
从学习芯片的基础知识开始。
「我花两周时间零经验从头开始构建 GPU,这可比想象的要难多了。」

总有人说老黄的芯片供不应求,大家恨不得去手搓 GPU,现在真的有人试了。

近日,美国一家 web3 开发公司的创始工程师之一 Adam Majmudar 分享了他「手搓 GPU」成功的经历,引发了网友们的一大片点赞。令人惊讶的是,他仅用两周时间就完成了这一脑力壮举。在 Twitter/X 的主题帖子中,Majmudar 进行了直播,一步步带我们回顾了整个过程。

自造 GPU 的实践当然也被公开在 GitHub 上,现在这个项目已有 5300 的 Star 量了。

项目链接:https://github.com/adam-maj/tiny-gpu

需要明确的是,该项目目前的节点是在 Verilog 中的芯片布局,最终通过 OpenLane EDA 软件进行了验证。在这之后,GPU 还将通过 Tiny Tapeout 7 提交流片,因此注定会在未来几个月内成为物理形态的芯片。

Majmudar 详细列出了设计 GPU 所完成的任务流程。显然,作为一个「从头开始」的项目,在试探性迈出第一步之前就需要进行大量的研究和思考。由于专有技术的主导地位,GPU 是一个相对复杂的研究领域,想想就难,实践起来更难。

手搓 GPU 要分几步?

实际上对于 Majmudar 来说,操作比这个步骤还要多,因为他真的没啥技术基础,是从学习 GPU 架构的基础知识开始的。

他首先开始尝试通过学习英伟达的 CUDA 框架来理解 GPU 软件模式,进而理解了用于编写 GPU 程序(称为内核)的相同指令多数据 (SIMD) 编程模式。

有了这些背景,Majmudar 开始深入学习 GPU 的核心元素:从全局内存、计算核心、分层缓存、内存控制器到程序调度。

然后在每个计算核心中,我们还要了解其中的主要单元:包括寄存器、本地 / 共享内存、加载存储单元 (LSU) 、计算单元 、调度程序、获取器和解码器。

好了,你已经是一个了解了现代 GPU 架构的人了,下面让我们来手搓一块 GPU 吧。

此处 Majmudar 表示,由于复杂性如此之高,我们必须将 GPU 简化到新手能够设计的水平,否则项目就工期爆炸了。

接下来就是创建一个自己的 GPU 架构。我们的目标是创造一个最小的 GPU 来突出 GPU 的核心概念,并消除不必要的复杂性,以便其他人可以更轻松地了解 GPU。

Majmudar 表示,设计自己的 GPU 架构是一项令人难以置信的实践。

他一边学习一边操作,随后决定在设计中强调以下几点: 

  • 并行化 - 在硬件中实现 SIMD 模式;
  • 内存访问 - 观察 GPU 如何应对从缓慢且带宽有限的内存访问大量数据的挑战;
  • 资源管理 - 最大限度提高资源利用率和效率。

通过对上述架构的多次迭代,Majmudar 决定专注于通用并行计算 (GPGPU) 功能,面向机器学习(machine learning)的更广泛用例。

设计称得上紧跟时代。

这里的一切都是最简单的形式。

第三步是为这块 GPU 编写自定义的汇编语言。

Majmudar 表示,其中一个最关键的因素是他 GPU 实际上可以执行用 SIMD 编程模式编写的内核。为了实现这一点,就必须为 GPU 设计自己的指令集架构(ISA),以便用来编写内核。他制作了自己的 11 条小型指令 ISA,该 ISA 受到 LC4 ISA 的启发。在这之后,他又编写一些简单的矩阵数学内核作为概念证明。

这是 Adam Majmudar 提出的 ISA 的完整表格,其中包括每条指令的确切结构。

接下来,Majmudar 编写了两个在其 GPU 上运行的矩阵数学内核。这些矩阵加法和乘法内核将演示 GPU 的关键功能,并提供其在图形和机器学习任务中应用有效的证据。

为矩阵加法和乘法编写的内核。

Majmudar 用 Verilog 构建 GPU 带来了许多问题。这是最困难的部分,学会了很多知识,但也多次重写了代码。值得一提的是,Majmudar 得到了美国知名黑客 George Hotz 的建议与帮助。 

最初,他将全局内存实现为 SRAM,大佬给出的反馈说这违背了构建 GPU 的整个目的 ——GPU 的最大设计挑战是管理访问有限带宽的异步内存(DRAM)延迟。

因此,Majmudar 最终使用外部异步内存重建了设计,并最终意识到还需要添加内存控制器。

其次,Majmudar 一开始是用 warp-scheduler 来实现 GPU 的,这是一个很大的错误,对于该项目来说太复杂且没有必要。还好 George Hotz 及时提出了反馈。当一开始收到反馈时,Majmudar 甚至没有足够的背景知识来完全理解它,所以花了很多时间尝试构建一个 Warp 调度程序,这才醒悟过来。

这还没有完,一开始的设计中,Majmudar 没有在每个计算核心内正确实现调度,因此不得不回过头,分阶段设计计算核心执行以获得正确的控制流。

最终,Majmudar 对代码的第三次重写实现了目标,修复了计算核心的执行调度。

这是用 Verilog 构建的 GPU 中单个线程的执行流程,它的执行方式与 CPU 非常相似。

经过大量重新设计后,我们终于可以看到 GPU 运行矩阵加法和乘法时内核的景象了。看到一切正常工作,GPU 输出了正确的结果,这是一种不可思议的感觉。

然后,我们还需要将设计通过 EDA 流程,转换为完整的芯片布局。

完整的 Verilog 设计是通过 OpenLane EDA 实现的,采用 Skywater 130nm 工艺节点(用于 Tiny Tapeout)。Majmudar 特别解释说,一些设计规则检查 (DRC) 失败,需要返工。

经过两周的努力,Majmudar 的 GPU 设计的 3D 可视化如下图所示:

CPU、GPU 都做了出来

Adam Majmudar 表示自己在很短的时间内,了解了芯片架构的基础知识,掌握了芯片制造的细节,并使用 EDA 工具完成了他的第一个完整芯片布局,即手搓 CPU。

谈到如何能做到「手搓芯片」,Majmudar 总结主要分 6 步:

  • 学习芯片架构的基础知识;
  • 学习芯片制造的基础知识,包括材料、晶圆制备、图案化和封装等;
  • 通过逐层制作 CMOS 晶体管开始电子设计自动化;
  • 用 Verilog 创建第一个完整电路;
  • 为电路实施仿真和形式验证;

设计完整芯片布局,使用 OpenLane(一种开源 EDA 工具)进行设计和优化。

在工程师圈子里,时不时会有人去尝试「手搓芯片」,用最硬核的方式去了解芯片架构的基础知识。不过在以前,大多数人因为难度,尝试的是 CPU。

2020 年,中国科学院大学公布了首期「一生一芯」计划的结果,曾经引发了人们的热议。该计划是在国内首次以流片为目标,由 5 位 2016 级本科生主导完成一款 64 位 RISC-V 处理器 SoC 芯片设计并实现流片。

此项目还得到了 RISC 体系奠基人、图灵奖得主 David Patterson 教授的关注。

图片来自 @包云岗 https://www.zhihu.com/question/409298856

得益于开源芯片、敏捷设计等行业新趋势的发展,芯片的设计门槛正在越来越低。

或许手搓 GPU 的先例出现后,我们会看到更多、性能更加强大的自造芯片实践。

参考内容:
https://www.tomshardware.com/pc-components/gpus/engineer-builds-a-gpu-from-scratch-in-two-weeks-process-much-harder-than-he-expected
https://twitter.com/MajmudarAdam/status/1783304235909877846

何恺明在MIT授课的课件PPT下载

在CVer公众号后台回复:何恺明,即可下载本课程的所有566页课件PPT!赶紧学起来!

CVPR 2024 论文和代码下载

在CVer公众号后台回复:CVPR2024,即可下载CVPR 2024论文和代码开源的论文合集


Mamba、多模态和扩散模型交流群成立

扫描下方二维码,或者添加微信:CVer5555,即可添加CVer小助手微信,便可申请加入CVer-Mamba、多模态学习或者扩散模型微信交流群。另外其他垂直方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索、论文投稿&交流、PyTorch、TensorFlow和Transformer、NeRF、3DGS、Mamba等。


一定要备注:研究方向+地点+学校/公司+昵称(如Mamba、多模态学习或者扩散模型+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群

▲扫码或加微信号: CVer5555,进交流群


CVer计算机视觉(知识星球)来了!想要了解最新最快最好的CV/DL/AI论文速递、优质实战项目、AI行业前沿、从入门到精通学习教程等资料,欢迎扫描下方二维码,加入CVer计算机视觉(知识星球),已汇集近万人!


扫码加入星球学习


▲点击上方卡片,关注CVer公众号

整理不易,请点赞和在看

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
英伟达成全球市值第一公司/华为高管称昇腾 AI 算力已超英伟达 A100/马斯克称未来人形机器人普及程度将是汽车10倍三支国内团队获荣誉提名,英伟达CMU各占40%!ACM顶会SIGGRAPH 2024最佳论文揭晓ACM顶会SIGGRAPH 2024最佳论文揭晓,英伟达CMU各占40%!三支国内团队获荣誉提名财经早参|多家银行暂停无卡存取款;道指跌超400点,英伟达CEO身家突破1000亿美元;朝鲜通过气球向韩国投放大量污物消息称英伟达 Blackwell“B100”GPU 将配 192GB HBM3e 显存,B200 配 288GB 显存一喷就能带走脏东西?这款浴室清洁剂专为懒人设计,清洗一次,干净好几个星期!夏天不能错过的2个“紫色食物”,营养比米饭高几倍!照着这个公式吃,不愁娃不长从零开始手搓GPU,照着英伟达CUDA来,只用两个星期即便一个人也要用两个杯子,这就是一个喝工夫茶的人最后的倔强 | 陈思呈 一席x东方树叶OpenAI有望在今年夏季推出GPT-5;英伟达推出更强GPU芯片;马斯克宣布正式开源Grok-1|AIGC周观察第三十七期人肉搜索的不法行为与危害明年推出256核3nm CPU!Ampere公布未来路线图,用CPU加速AI计算从零开始的自然拼读学习路径,我都免费给你规划好啦!掌握Linux磁盘管理技巧:从零开始配置磁盘阵列!从零开始设计一个GPU:附详细流程狗引儿【长篇】(五十一)高通谷歌等搞基金会,想对抗英伟达CUDA!靠不靠谱?开源日报 | 构建一个类似英伟达CUDA的开源生态;“AI程序员”大杀四方,人类程序员开始反击;Podman 5.0发布老黄一口气解密三代GPU!粉碎摩尔定律打造AI帝国,量产Blackwell解决ChatGPT全球耗电难题花卉摄影,娇艳欲滴英伟达CUDA护城河,到底有多深?1个芯片顶英伟达3个?这个偏爱印度的创始人爆肝8年,终于等来抢英伟达泼天富贵的一天!Costco四月零食大赏!照着买,再也不用羡慕别人家的costco了!反CUDA联盟:打倒英伟达!从零开始,用英伟达T4、A10训练小型文生视频模型,几小时搞定中篇小说:连长(04)反英伟达CUDA联盟集结:谷歌英特尔高通牵头,微软亚马逊跑步加入狗引儿【长篇】(四十九)编剧小白如何从零开始?入行前先解决这些问题英伟达CEO每天都用,AI搜索会是未来吗?广汽本田启动大规模裁员,以主动离职为主;微软回应中国区AI团队“打包赴美”传闻;英伟达CEO黄仁勋年薪大涨60%|邦早报【友情转发】【TBA Workshop】从零开始, 建立你的个人网站!跟着英伟达「喝汤」,工业富联还能涨多久?丨氪金 · 硬科技野心藏不住了!不满CPU统治,英伟达决定彻底重写软件开发栈!黄仁勋:为什么还要用Python?命令行都不需要!GPU开发时代将至小众心理副业丨非科班如何从零开启聊愈师生涯?
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。