我今天听说了 Cray 的新超级计算机 XK6,但我对瓶颈在哪里有点困惑。是互联的吗?配置有 500,000 个 16 核处理器的 XK6 能否实时实现与玩具总动员 3 相媲美的图形保真度?“实时”是指 60fps,即每帧大约 16.7 毫秒。
2 回答
不会。纯粹的计算与渲染《玩具总动员 3》或类似的现代动画(或 VFX)电影中的电影帧所需的时间相去甚远。这些场景可能会引用数百 GB 的纹理,即使您可以确切知道一帧需要该纹理的哪个子集,它也可能是数十 GB,仍然需要从磁盘读取和/或传输一个网络。GPU 或大规模并行分布式计算并不能加快速度。此外,渲染只是最后一步……为帧准备几何输入(模拟流体、布料和头发,镶嵌几何,从磁盘读取和解释大场景)可能很重要。
所以,只是从空气中提取数字(但这些是适度逼真的),假设需要 30 分钟来准备场景(加载模型、对其进行细分、一些小型模拟等),并且需要 4.5 小时来渲染(其中,比如说,30 分钟是从磁盘读取纹理和其他资源,剩下 4 小时的“光线追踪”和其他计算)。如果 XK6 让光线追踪无限快,它只会将整个过程加快 5 倍(1 小时仍然难以序列化准备和 I/O)。这就是阿姆达尔定律。
现在,您可能会问自己,“游戏怎么跑得这么快?” 他们以两种方式做到这一点:(1)他们大大减少了数据集(纹理大小、几何分辨率等),使其全部适合 GPU 并以相当快的速度加载级别(奇怪的是,你的用户是当您认为渲染是“实时”发生时,不算在内);(2) 他们不惜一切代价在计算、技巧和人力上,在交付磁盘之前优化场景和算法,这样当它在玩家面前时,它可以快速渲染。
所以,总而言之,如果你问 XK6 的总计算能力是否足以实时计算渲染电影帧所需的所有纯数学,那么是的,它可能是。但是,如果您要问 XK6 是否可以根据渲染器所需的输入类型实时渲染电影,那么不,它不能。XK6 对渲染这些电影帧的人有用吗?不,从头开始重新编程所有软件(数百人年)可能不值得麻烦。
从另一个角度来看,用户通常一次只渲染一个场景,然后进行小的更改并一遍又一遍地重新渲染。仅实时渲染单个场景可能仍需要将几 GB 的纹理加载到 GPU 的 RAM 上。
像 Cray 那样使用“核心海洋”或大量现代 CPU 的超级计算机能否实时执行这项工作?是的,对于足够简单的场景。更复杂的场景,在 8MP 时每个像素需要 100 多条光线(电影为 4K x 2K,DSLR/独立类型电影为 2MP),以及大量物体、阴影、雾霾、折射、漫射光源等)可能也需要很多计算,即使是 24fps。