图解 · 运行过程 · 工程取舍
算得慢,可能是东西搬得慢
为什么一块算力更高的GPU,不一定让任务同比变快?
配套正文:F21基础课
动态图解 · F21
算得慢,可能是东西搬得慢
为什么一块算力更高的GPU,不一定让任务同比变快?
把GPU想成工厂只适合记住一个有限类比:运算像加工,读写像运输。加工设备翻倍但运输仍堵塞,整体不会同比快。真正的分析应回到运算数、搬运字节数、设备速率与测量,而不是只看某个宣传峰值。
计算量要做的运算总数。
带宽单位时间能搬运的字节数。
吞吐单位时间完成多少工作;不同于一条请求要多久。
通信数据在设备之间交换产生的成本。
输入与适用条件:固定教学任务与理想速率。第二、三帧是各自恢复基准后只改一个因素的独立对照;不宣称真实运行时间。
1 / 4 · 先问算力和搬运谁更慢
第1步,共4步
窄屏可左右滑动图形,或点击“放大图形”。文字解释紧随图后。
教学任务:1,000,000次浮点运算;8,000,000字节搬运。假定算力10亿次/秒、带宽10亿字节/秒。
计算=1ms;搬运=8ms默认静止。用“下一步”看完解释再继续;播放到最后一步自动停止。键盘聚焦播放器后,可用左右键逐步查看、空格播放/暂停。图中颜色辅助区分,含义同时用文字注明。
逐步说明与计算记录
以下解释全部展开,与播放器使用同一份数据;不是另换输入的第二个算例。
1.先问算力和搬运谁更慢
教学任务:1,000,000次浮点运算;8,000,000字节搬运。假定算力10亿次/秒、带宽10亿字节/秒。
计算=1ms;搬运=8ms2.只把算力翻倍
仅把计算速度翻倍;计算时间下界变0.0005秒,搬运仍为0.008秒,所以瓶颈没有改变。
计算=0.5ms;搬运=8ms3.只把搬运量减半
恢复原算力,只减少一半数据搬运。此时两个下界是0.001与0.004秒,才改变主导限制。
计算=1ms;搬运=4ms4.下界不是实测耗时
max(计算下界,搬运下界)只给出理想限制;排队、同步、调度和未重叠部分还会增加实际时间。
计算=1ms;搬运=4ms为什么需要
先定位主导瓶颈,才知道该优化矩阵计算、显存读写还是调度。
怎样实现
用分账估计指导Profile,再用同任务实测检查。
可能的代价与误解
提高吞吐可能增加单请求排队;分片省内存可能增加网络通信。
如何判断是否做对
观察端到端时间及各阶段Trace,避免只测某一个最快算子。