[engine]加载速度拉满的direct storage
Posted 安柏霖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[engine]加载速度拉满的direct storage相关的知识,希望对你有一定的参考价值。
ps5给人很大亮眼的地方就是超快的硬盘,的确加载速度也是最近游戏硬件猛烈升级的重要领域;
刚好最近gdc22中ForSpoken的share中也聊到了DirectStorage,终于pc上也可以开始享受加载速度提升的快乐了;
大致的发展
- 19年nvidia就在high performance computing那部分,cuda里面提出了GPUDirectStorage
- 在console上也有类似的概念在,ps5和xbox
- 大约20年,开始宣布pc上也要加这个feature
- 22年前段时间,微软正式宣布了开始使用 DirectStorage API Now Available on PC
- windows pix在最新的版本里,也能看到direct storage的信息了:PIX-2203.07: Support for DirectStorage
主要内容
上面这个图是一个好的诠释:
传统做法:
- file io到内存,
- 解压
- 送往gpu
direct storage
- 直接文件进gpu,充分利用pcie的带宽
- 这个进gpu可以异步大规模并行,带宽高很多
- gpu中可以lz4解压
优势:
- 充分利用带宽,这类数据是1.5x到2.5x不等,主要用于nvme接口的ssd
- 可以大规模并行加载
- 节省cpu(io以及解压),少了内存的操作
- 程序员角度看也更加优雅
一些信息补充:
- win10可以用,win11为direct storage做了底层优化,效果更好
实际游戏中的数据
(个人也十分期待的游戏)
目前落地到游戏中的数据,就是22年gdc,amd专场的ForSpoken的分享;
GDC 2022 - Breaking Down the World of Athia: The Technologies of Forspoken
(amd的数据)
可以看出理论带宽的差异非常大,在ForSpoken的数据中,则一般,大约10%的优势;
有点怀疑是底层没有对此做深度定制,可能就是简单用了下,那么loading中带宽以外的部分占比比较高(serialize,init等工作)
以上是关于[engine]加载速度拉满的direct storage的主要内容,如果未能解决你的问题,请参考以下文章
Pandarallel:一款能让你的 Python 计算火力拉满的工具