图解 · 运行过程 · 工程取舍

数据搬到GPU,改变的是位置而不是含义

动态图解约 1 千字1 组分步图解

“装得下”和“算得快”为什么不是同一回事?

配套正文:F06基础课

动态图解 · F06

数据搬到GPU,改变的是位置而不是含义

“装得下”和“算得快”为什么不是同一回事?

CPU与GPU可先理解成不同的计算场地。数据必须到达实际执行算子的设备,才能参与运算;搬过去并不自动变聪明。数据类型决定每个数怎样存、可表示范围和精度,不能只看“数字还是原来那个数字”。

字节内存占用的计量单位。
精度数值表示的细致程度;低精度会有舍入。
带宽每秒最多能搬多少数据。

输入与适用条件:只计算B=2、T=3、d=4的一份编号/特征张量,不计算模型总内存、驱动开销和GPU实测速度。

1 / 4 · 先数对象

第1步,共4步

窄屏可左右滑动图形,或点击“放大图形”。文字解释紧随图后。

数据搬到GPU,改变的是位置而不是含义:先数对象整数编号数6浮点特征数24编号表与特征表不是同一种数据:这里6个整数编号、24个浮点特征。

编号表与特征表不是同一种数据:这里6个整数编号、24个浮点特征。

本步状态由图形与说明共同给出。

6×8=48;24×4=96

默认静止。用“下一步”看完解释再继续;播放到最后一步自动停止。键盘聚焦播放器后,可用左右键逐步查看、空格播放/暂停。图中颜色辅助区分,含义同时用文字注明。

逐步说明与计算记录

以下解释全部展开,与播放器使用同一份数据;不是另换输入的第二个算例。

1.先数对象

编号表与特征表不是同一种数据:这里6个整数编号、24个浮点特征。

6×8=48;24×4=96

2.再指定每数几字节

教学约定编号int64每数8字节;特征float32每数4字节。分别是48和96字节。

6×8=48;24×4=96

3.只改特征精度

把24个特征改成每数2字节,其存储变成48字节;ID仍用原来的48字节。

24×2=48;只计这一份张量

4.计算还有别的内存

模型参数、临时激活和KV缓存都另外占空间。不要用这份96字节特征表代替整个模型的内存账。

24×2=48;只计这一份张量

为什么需要

当速度被搬运限制时,继续加计算核心可能收益很小。

怎样实现

分开数参数、激活、缓存和传输;再测算子与数据传输耗时。

可能的代价与误解

低精度不保证所有算子更快;异步GPU未同步时的计时还会低估真实耗时。

如何判断是否做对

核对字节数、数据类型、设备位置,并用正确的同步方式测量。

输入关键词即可检索。

↑ ↓ 选择 Enter 打开Esc 关闭 · 仅本地搜索

阅读设置

阅读设置仅保存在本机浏览器,不上传任何数据。