前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大模型与AI底层技术揭秘(34)最早的国际象棋程序

大模型与AI底层技术揭秘(34)最早的国际象棋程序

作者头像
用户8289326
发布2024-05-18 08:44:14
750
发布2024-05-18 08:44:14
举报

在上期,我们提到,实现支持完备QoS的运营级别GPU虚拟化的关键在于,实现GPU任务的上下文切换。这实际上涉及到一个问题:

GPU的指令是不是图灵完备的?

如果GPU的指令是图灵完备的,引出的下一个问题就是:

由于图灵完备的处理器必然支持if-else指令,不同的GPU硬件线程(CUDA Core)跑到了不同的if-else分支会怎么样?

以及另一个更难的问题:多个GPU线程如何实现步调一致?

此外,GPU任务的上下文切换实际上是将GPU的各个线程的寄存器列(register file)保存到内存,那么,这就涉及到GPU硬件的存储器组织。

我们将在这几期中集中讨论这些问题。

话分两头,让我们先看一个故事:

小H在知道了图灵是谁以后,去翻看图灵的传记。

图灵爱下国际象棋。1948年,图灵开发了一个国际象棋程序,名叫Turochamp,但由于缺乏合适的计算机来运行这个程序,图灵只好用所谓的“图灵机”来运行它。

所谓的“图灵机”,其实就是图灵本人找了一张写着指令的纸。一支笔,以及一张存取数据的纸构成的。在“图灵机”上,Turochamp每下一步需要半小时的时间。

图灵邀请小H来帮他测试这个程序,两个人拿出棋盘,图灵充当“图灵机”严格执行自己的Turochamp计算程序,而小H漫不经心地下着。

突然,小H发现,图灵,不,Turochamp出现了破绽…小H大喜,下出了车C8-D8,牵制住白方的皇后。白方皇后如果跑开,王就暴露在黑方车攻击范围内了,因此只能咽下皇后被吃的苦果。图灵一看大势已去,代表Turochamp认输了。

小H下赢了棋,很开心,这时突然想上厕所,却忘了英文该怎么说,只好到处寻找,好不容易找到厕所了,门却被锁住打不开。

小H被尿憋醒了。

之所以图灵能够用一支笔和两张纸构成的“图灵机”模拟一台计算机来运行国际象棋程序,是因为,所谓的“图灵机”支持以下功能:

  1. 加减乘除和逻辑运算;
  2. 循环与分支控制流;
  3. 从外部设备输入与向外部设备输出;

(而这三部分也恰好对应冯·诺依曼描述的算术逻辑单元、控制器和输入输出设备)。

在Nvidia的《Parallel Thread execution Instruction Set Architecture》(https://docs.nvidia.com/cuda/parallel-thread-execution/index.html )中,对GPU的指令集做了详细的介绍。

先说结论:Nvidia GPU的指令集是图灵完备的。

Nvidia GPU使用的是高度精简的指令集,具备一系列加减乘除等算术逻辑指令;分支跳转、调用/返回等控制指令,以及load/store等内存读写指令。

因此,Nvidia GPU具备图灵完备的指令集。

我们使用高级编程语言,调用所有CUDA库进行对GPU的编程,实际上都是将高级语言程序(特别是数学表达式)编译为GPU指令,在GPU中并发执行。这就需要我们深入理解GPU的内部。

我们下期开始详解GPU内部的计算单元和存储单元的组织。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-05-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 帅云霓的技术小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档