原标题:99行代码实现冰雪奇缘特效的「太极」再进化,胡渊鸣团队、快手等联合打造
机器之心报道
机器之心编辑部
99 行代码实现《冰雪奇缘》特效的续集来了,太极编译器再次升级。
得益于计算机仿真技术的不断发展,我们能够在电脑中重建越来越逼真的现实世界,制作出《冰雪奇缘》等优秀的特效电影。
但逼真的场景、丰富的细节离不开超高精度的物理模拟,因此特效的每一帧几乎都是用经费烧出来的。
现代动画电影(包括《冰雪奇缘》等),经常使用基于物理的动画生产特效,丰富感官的体验。基于粒子的表示是其中常用的方法。场景越大,粒子就越多。比如,要模拟一个 300 米长的溃坝场景中的水,可能会需要数千万粒子,而这些粒子的存储需要大量显存。比如说,如果需要96GB的显存,则需要购置大量高端显卡,如 4 块 NVIDIA Quadro P6000 GPU。
哦,对了,一块 P6000 在 Amazon 上的售价约为 4000 美元,而这样的 GPU,你要买 4 块。显然,这个成本不是普通家庭能玩得起的。
针对这一现状,快手、麻省理工、浙大、清华的研究者进行了物理编译器自动量化方面的研究,提出了一套用于量化模拟的新的语言抽象和编译系统——QuanTaichi。它可以使用低精度量化的数字数据类型并将其打包(packing)以表示模拟状态,从而减少了内存空间和带宽消耗。有了这项技术的加持,高精度的物理模拟只需要一块 GPU 就能实现。
QuanTaichi 的实现基于 MIT CSAIL 胡渊鸣等人之前提出的「太极(Taichi)」编程语言和编译器,使开发人员可以轻松地在不同的全精度和量化模拟器之间进行切换,以探索最佳的量化方案,并最终在空间和精度之间取得良好的平衡。相关工作已经入选图形学顶会 SIGGRAPH 2021,也已经被合入到了太极的开源 Github 库中。
下面这个视频展示了量化后的仿真结果。两只兔子形烟雾(4亿体素)演化的逼真程度和全精度浮点数的结果不相上下。但需要指出的是,这个 demo 需要的存储空间仅为全精度浮点数模拟的二分之一!
为了验证结果,研究人员还做了一些用户调研,测试题大致如下。你能分辨出哪个是量化后的吗?
同样的技术还可以应用在手机端,使得物理模拟在手机端提速 40%,让运算能力不太强的手机运行更复杂的效果。
总体来看,QuanTaichi 不仅可以在通用 GPU 计算领域大幅提升研发效能,助力游戏中的物理模拟、大尺度图像处理、媒体编解码、科学计算等方向,还适用于太极平台上应用的各类模型,能够提升存储空间的使用效率,也有助于太极技术生态的未来发展。
目前,太极技术已经让快手成为首个推出实时液体及烟雾模拟动态效果的短视频和直播平台,行业首发了「别哭鸭」、「我要去潜水」、「火焰超能力」等特效。其中,「圣诞快乐」魔法表情成为爆款,有 74 万用户拍摄并上传了视频,大约有两千多万用户观看了太极支持的这款魔法表情。
技术细节
用于模拟的量化数字数据类型
在 QuanTaichi 中,研究者提出了以下几种自定义数值类型:
1. 自定义整数类型(Custom Int)由用户指定位数的整数类型,包括有符号类型和无符号类型;
2. 自定义浮点数类型(Custom Float):由用户指定位数的浮点数类型,QuanTaichi 为其提供了三种实现:
下图是三种自定义浮点数在内存中的组织形式示例:
位适配器类型
当前的计算机体系结构并不支持任意位长度的数据读写和计算,因此,研究者在 QuanTaichi 中提出了两种位适配器:
1. 位结构体(Bit structs)。位结构体允许用户使用多个不同的自定义类型数据(如 custom int 5、custom float 12 等)填充一个完整的计算机硬件原生支持的类型(如 32 位整数等)。
2. 位数组(Bit arrays)。位数组允许用户在一个硬件原生类型中存储多个同样的自定义类型数据。
编译器优化
1. 位结构体融合存储
这种优化的核心思想是分析 Kernel 的计算流程,将 bit-struct 内部的成员变量尽可能批量写入,减少原子性内存访问次数。
在实际应用中,一个位结构体中的字段经常一起访问,因此一个位结构体的不同组件很可能被一个 kernel 中的多个语句存储。在这种情况下,研究者对该位结构中的所有存储使用一个 atomicRMW(atomic read-modify-write), 以减少内存访问开销。
2. 线程安全推断
判断操作是否为线程安全,如果本身是安全的,则不用费时的原子写操作。QuanTaichi 支持两种访存模式的优化:
3. 位数组向量化
考虑以下情形:
虽然该研究中的系统可以很容易地提高存储效率,但是这种按位 for 循环的计算效率很低,原因有两个。首先,我们必须为模拟的 1 位数值使用硬件原生的 32 位整数寄存器,这只使用了操作位宽度的 1/32。其次,当逐位存储结果时,为了线程安全,代码生成器必须发出大量昂贵的 atomicRMW 操作,因为多个 CPU/GPU 线程可能会在一个 u32 中写入不同的位,从而导致数据争用。为此,研究者实现了以下三种优化方法:按位进行循环向量化;带有偏移量的位向量化读取;位向量化的整数加法。对位数组加载、存储并对算法进行矢量化,以便每次迭代都处理一个完整的 32 x u1 位数组,而不是单个的 u1。
实验结果
「生命游戏」测试
研究者首先在「生命游戏」上测试了他们的系统。生命游戏是一个二维网格游戏,这个网格中每个方格居住着一个活着或死了的细胞。一个细胞在下一个时刻的生死取决于相邻 8 个方格中活着或死了的细胞的数量。如果相邻方格活着的细胞数量过多,这个细胞会因为资源匮乏而在下一个时刻死去;相反,如果周围活细胞过少,这个细胞会因为孤单而死去。
每个细胞的「生」或「死」两种状态可以用一个位来表示。在 C 语言等传统语言中,用户必须使用 char (u8) 类型来表示细胞状态,除非他们手动打包 / 拆封这些状态。但在 QuanTaichi 系统中,用户可以在不修改任何计算代码的情况下将存储效率提升至原来的 8 倍。
OTCA 元像素是「生命游戏」中的一种特殊结构,该结构由 2048x2048 个细胞组成,其整体行为与单个细胞行为一致。研究者在单张 NVidia RTX 3080 Ti (10GB) 上实现了 70 x 70 个 OTCA 元像素,即超过 200 亿个细胞的生命游戏模拟。
欧拉流体模拟测试
研究者实现了一个基于稀疏网格的 advection-reflection 流体模拟求解器。通过量化方法,他们成功地将每一个网格所需的存储空间从 84 个字节压缩到了 44 个字节。在 NVidia Tesla V100(32GB)上,他们实现了超过 4.2 亿个激活稀疏网格的烟雾模拟。下图分别是量化的方案和模拟结果。
MLS-MPM 算法测试
研究者选择了 MLS-MPM 算法测试他们的系统在混合欧拉 - 拉格朗日方法上的有效性。具体来说,他们选择了一种量化方案,使得每个粒子消耗的存储空间从 68 个字节下降到 40 个字节。在 NVidia RTX 3090 上,他们实现了超过 2.3 亿个粒子的弹性体模拟。下图分别是量化方案和模拟结果:
由于 iPhone 的 GPU 对整型运算增加了额外的优化和加速,因此研究者还在移动设备(iPhoneXS)上测试了量化后的 MLS-MPM 的表现。与台式机相比,移动设备的计算能力相对有限,并且对实时响应有强烈的需求。因此,它们通常只能运行小规模的模拟,存储并不是真正的问题。但在测试中,研究者惊讶地发现:在背景网格上使用量化数据类型仍然是有提升的。因为移动 GPU 通常只支持 32 位整数的高性能原生 atomicAdd,而并不原生支持浮点数的 32 位 atomicAdd。使用「ti.quant.fixed(fration=32)」表示网格数据可以将软件模拟的 32 位浮点数 atomicAdd 转换为硬件原生的 32 位整数 atomicAdd,显著提高了在 iPhone XS 上运行的 MLS-MPM 程序的 P2G 性能。
责任编辑:
相关下载 |
原标题:皇太极的4个女儿,均为清朝做了贡献,其中三位逃不出“魔咒” 清朝自入关以后,都按照中原传统,逐步进行汉化。顺治皇帝作为入关后第一位皇帝,虽然24详情>>
WWDC 2021开发者大会上,Apple Watch专用操作系统watchOS也按照惯例迎来升级,watchOS 8正式登场。 苹果宣称watchOS 8拥有丰富的新功能,但介绍得并不多,最值得注意的就详情>>
在游戏《天涯明月刀》中,太极芋泥食谱的食材配方为芋艿、特制饴糖、调料、辅料,获得方法是玩家在达到26级时自行烹饪解锁。太极芋泥属于襄州菜系、素食、轻口、甜详情>>
454yx《太极崛起》力图将您代入一个原汁原味的武侠世界!而要说起怎么样感受这份武侠情,那便不得不提及那令人甚为惊叹的画面感了。以2D写实风格为主打的美术场景,着重于详情>>
太极风云决是一款精彩刺激的仙侠题材手游。玩家可以自由进行奇幻的仙侠世界自由冒险,会见识不同的事情和遇见不同风格的人物,这都是玩家修仙旅程的宝贵历程,还可以邂逅自己心中详情>>
国产武侠题材觉醒之作,《太极崛起SF》引入中国传统文化内涵,以电影级视觉技术,再现波澜壮阔的江湖世界。游戏以独特、创新的内容,致力让全球武侠粉丝,品味到金庸大师笔下东详情>>
原标题:皇太极戎马一生,死因却遮遮掩掩,专家:有点尴尬,史书不好记载 皇太极一生戎马,征战无数。他创建了大清朝,虽然是我国古代的最后一个朝代,但是他能够建立详情>>
传奇世界逆魔古刹太极阵的经验。冰雪复古传奇凭借着升级、爆装、攻沙三大传奇经典玩法深受许多小伙伴的喜爱,这大概就是最良心的传奇手游了。 1.进入到详情>>
《极限竞速地平线4》科尼塞克CCGT的粉丝不在少数,要是能给它配上一身好看的涂装就更完美了,那么接下来请看“详情>>
69gm游戏太极崛起是一款轻武侠角色扮演类无限元宝公益服页游,一草一木,一砖一瓦,都充满着浓郁的武侠意境,游戏中玩家历经磨难,一路成长,尝遍人世间的爱恨情仇。在游戏中前期发展最详情>>
原标题:孝庄留多尔衮在宫中过夜, 事情泄露后, 第二天皇太极尸体被抬出宫 导读:清太宗皇太极有两位来自蒙古科尔沁的女人,一位是孝端文皇后博尔济吉特·哲详情>>
原标题:范文程打造大清软实力的第一人,为何老婆却被霸占?如何自我评价 文/赵立波 导读:作为皇太极最为倚重的谋士范文程,本是北宋名臣范仲淹的第十七世孙,他详情>>
为庆祝4月版本“一战封神”正式上线,国民枪战游戏《穿越火线》(简称:CF)将自4月10日起,在每周末为各位玩家带来版本内容相关的专属福利活动。在本次周末活动中,CF将为广大CFer送详情>>
为庆祝4月版本“一战封神”正式上线,国民枪战游戏《穿越火线》(简称:CF)将自4月10日起,在每周末为各位玩家带来版本内容相关的专属福利活动。在本次周末活动中,C详情>>
原标题:炉石传说:HSL棋王杯战斗激烈,太极剑完全是被运气制裁了啊 炉石传说在有了酒馆战棋模式之后可以说是又火爆了起来,同时也有了很多相关的比赛,这段详情>>
原标题:潜弑生母无人性,鲁莽无谋二到家——清代王爷莽古尔泰 爱新觉罗·莽古尔泰(1588-1633),清太祖努尔哈赤第五子,其母为努尔哈赤第二任大福晋(史称继妃详情>>
新太极崛起BT公益服 比例:1:1000元宝 特色:全网最高返利,上线送VIP海量元宝! 福利1:上线送VIP3,元宝*100000 福利2:单笔充10元,15天688800元宝任你领! 福利3:首详情>>
原标题:孝庄到底有多美?复原图撞脸某明星,难怪多尔衮甘愿为她放弃江山 我国经历了五千多年历史,其中有两千多年处于封建统治时期,这段时期出现了很多皇帝。详情>>
豪杰成长计划秘籍太极剑法介绍,豪杰成长计划秘籍太极剑法怎么得,今天给大家带来的是秘籍太极剑法介绍,一详情>>
福利1:上线送VIP3,元宝*100000 福利3:首充10的10块不算双倍返利元宝,首充之后才算 更多精彩其游戏请关注8811YX官网: 详情>>
原标题:经常因故被罚银,只因满朝他最萌——清代王爷阿巴泰 爱新觉罗·阿巴泰(1589-1646),清太祖努尔哈赤第七子,生母伊尔根觉罗氏为太祖侧妃。他历涉三朝,驰详情>>
原标题:正史上的顺治是谁的儿子? 清崇德三年(1638年),皇太极的第九子爱新觉罗·福临出生,而他也在崇德八年(1643年)的时候登上了皇位,成为了历史上的清世祖顺治详情>>
原标题:洪承畴降清后,是如何对待恩人沈百五的 洪承畴降清后,是如何对待恩人沈百五的 明崇祯十五年(公元1642年)二月,清军终于攻陷围困半年之久的松山城,俘虏详情>>
原标题:袁崇焕被杀后,皇太极发动大凌河之战,最终结果如何? 大凌河之战,是公元1631年(明崇祯四年,后金天聪五年),由后金皇太极率领的五万军队进攻明朝辽西大凌河详情>>
原标题:清廷正式举行了投降仪式,洪承畴等降将在皇太极面前俯首称臣了 清廷正式举行了投降仪式,洪承畴等降将在皇太极面前俯首称臣了 崇祯十一年(公元1638详情>>
今日,国产武侠动作游戏《紫塞秋风》发布了1.9大版本更新,并公布了版本宣传视频。在新版本中加入了新武学、新装备和新物品,游戏加入了太极拳、太极剑法、详情>>
《紫塞秋风》发售至今,以壮阔的丝绸之路风光,灵活多变的传统武术招式赢得了广大玩家朋友的喜爱。同时,《紫塞秋风》制作组为了给玩家带来更多更好的游戏内容,在发售后的这段详情>>
原标题:清史上唯一被凌迟的公主:身为皇太极的姐姐,莽古济为何被凌迟? 帝王家的手足相残,感觉就是一个常态,这背后的利益无非都与皇权有关。 清朝最出名的此详情>>
MOD介绍 模拟人生4千与千寻太极风格纹身MOD是由某玩家专门制作的游戏mod修改补丁,玩家直接放到游戏目录即可,在游戏中制作了很好看详情>>
《太极崛起SF》专区: 更多高爆版页游体验地址: 一般挂机选择跟自己等级差不多的怪物地图,以三招击杀为好。有条件的玩家可以多使用多倍经验道具,如连续使用八详情>>
实力不够 详情>>
太极门是《暴走英雄坛》中的一个门派,这个门派主张仁慈忠孝,不主进攻,游戏中玩家们可以前往指定的门派地点进行拜师,之后就可以进入太极门学习,门派武功还是非常不错的。想要了详情>>
天涯明月刀手游已经正式更新了天上白玉京版本,其中也为玩家们带来了许多的新款时装,那么下面就一起来看下天涯明月刀手游八荒饮太极介绍吧。 获详情>>
太极芋泥做法天涯明月刀天涯明月刀手游中,太极芋泥的制作方法为在烹饪界面内放入芋艿+特质饴糖+调料+辅料后进行烹饪即可,其中芋艿和特质饴糖是必要材料,但调料、详情>>
【DNF2021全职业加点】【DNF活动专区】【DNF2021年活动大全】【DNF1月活动大全】DNF太极天帝剑改版介绍物理攻击力:1167魔法攻击力:129详情>>
天刀手游太极芋泥怎么获得天涯明月刀手游中,太极芋泥的获得方式有:1、烹饪获得,玩家可以通过芋艿+特质饴糖+调料+辅料的配方制作获得太极芋泥,该配方会在厨师身份达详情>>
原标题:太极熊猫折扣最低客户端怎么玩教程来了 四极转生,冒险起航!现象级全球动作手游《太极熊猫》全新版本“玲珑奇遇”正式上线,跨平台约战深度优化详情>>
我的侠客新版太极拳武学怎么搭配?新版本也有新气象,搭配强力才能够体现出太极拳的能力哦,具体搭配内容现在就来告诉给大家吧,希望各位能够喜欢~ 我的侠客新太极拳武学选择推详情>>
华擎更新了其出品的 华擎更新 Z490 太极主板 BIOS:新增 C.A.M. 功能可开启 AMD 显卡 SAM 显存智取的 BIOS,版本为 L1.72。本次更新增加了 C.A.M.(Clever Access 内存)功详情>>
12月到啦,各位大侠所在的城市有没有迎来初雪呀?一定要注意保暖哦!本周《侠客风云传OL》的江湖依然热闹非凡,迎来了江湖中两位宗师泰斗。本周活动同时开启剑神和张详情>>