|
发表于 2023-9-24 23:15:26
|
显示全部楼层
|阅读模式
来自 中国–浙江–温州–平阳县
9月4日,太极图形开发者大会如约而至。顶着瓢泼的大雨和被取消N次的快车订单,同学们还是准时出现在了活动现场,更是有近千位同学在线上观看了当天的直播。错过活动的小伙伴,快来看看都有哪些精彩回顾!
(技术部分的梳理在最后,视频/文字资料也已经准备好啦。)
2D“冰雪奇缘”-3D“冰雪奇缘”
太极图形联合创始人兼CEO胡渊鸣在大会伊始向观众们介绍了太极图形的前世今生。许多人通过知乎上《99行代码的冰雪奇缘》知道了Taichi,只需要99行代码就可以写一个简单的连续介质模拟器,模拟三种相互作用的不同材料(水,果冻,雪),效果逼真。时隔一年又半载,太极软件工程师展示了最新的3D版“冰雪奇缘”,即Taichi基于GPU的高性能GUI解决方案。GGUI可以直接获取位于GPU上的太极物理仿真数据进行交互,并直接在GPU上进行渲染,实现了渲染性能的大幅提升。
动图封面
Taichi Zoo上演示的2D“冰雪奇缘”—Yuanming Hu
动图封面
实时3D MPM仿真—Dunfan Lu
开发者实例分享
活动当天,在美国、中国香港、杭州的三位太极用户在线上进行了实例分享:用太极编写不可压缩流体模拟器(如卡门涡街仿真),太极在SLAM上的牛刀小试以及用太极实现双向光线追踪积分器(BDPT)。这三位来自计算流体力学、工业机器人和图形学的工程师分别展示了太极在各自研究领域内的应用,笑谈道“以前用C++实现很劝退的,用太极容易很多”。除了易用性的增强,太极朝并行编程语言发展的潜力也逐渐在更多领域凸显。
Taichi编程语言的格局正在从“Graphics Programming for Everyone”向“Parallel Programming for Everyone”逐渐展开
实例1:用Taichi编写不可压缩流体模拟器(基于FVM和SIMPLE格式)包乾
不可压缩流体是流体仿真中最基本的一种计算类型,也是很多更为复杂流体的计算的基础。作者采用不可压缩流体仿真中普遍被采用的有限体积法(FVM)和SIMPLE算法,实现了用Taichi语言在二维管道内的非定常流体模拟,并通过添加障碍物的形式观测到了卡门涡街的产生和发展。通过本项目,作者展示了Taichi语言在流体计算方面的易用和高效特性,并探索了工程流体仿真和计算机图形学流体仿真的区别与联系。
实例2:Taichi在SLAM上的牛刀小试徐浩
SLAM全称为Simultaneous localization and mapping,即实时定位与地图构建,对移动机器人/无人机/自动驾驶/eVTOL等至关重要。使用Taichi进行mapping的SLAM后端,能够快速遍历特定层次、实现“免费”的并行加速,并可专注于算法实现。
实例3:如何用Taichi实现一个双向光线追踪积分器林耀冬
双向路径追踪方法相比传统单向方法,能更好模拟各种光学现象,但由于算法流程复杂,很少有并行实现的开源代码。本项目利用了太极上手简单,自动并行的特性,使用500行左右代码,实现了双向路径追踪的并行版本,大大节省了搭建该算法原型的时间。
超强技术实战
大会设置了互动性极强的技术实战环节—用太极实现N-body仿真,并讲解了Taichi编程语言的基本语法。从为电脑装载太极程序开始,太极图形编译器架构师张爱玲手把手带观众编写自己的第一个太极程序—弹簧-质点仿真游戏。几十位观众抱着电脑当场开码,全神贯注宛如考试现场。太极图形的软件工程师们遍布各个角落给大家答疑,当场有十多名同学成功完成实战,最快的一位同学仅用时40分钟。
Taichi Zoo
太极图形开发者大会上,太极图形联合创始人兼CTO匡冶正式发布了在线实时创作分享平台Taichi Zoo(beta)。许多同学在电脑前自行体验了一番,在Taichi Zoo中只需简短地编写代码、调整参数,点击编译,就可以立马看到自己调试的动态效果,还可以将自己的作品一键分享给同伴。
“尝鲜戳这里”
最新技术进展
大会现场有6位太极图形的软件工程师进行了技术进展分享,展现了太极在易用性的提升:包括动态field的添加删除、紧密排布的内存优化、集成测试上的完善等等。
1.GGUI:Taichi基于GPU的高性能GUI解决方案卢敦凡
本次演讲介绍了GGUI:太极基于GPU的高性能GUI解决方案。GGUI可以直接获取位于GPU上的太极物理仿真数据进行交互,并直接在GPU上进行渲染,这使得GGUI可以高效地渲染。
2.Packed Mode:有效降低Non-power-of-two Fields的内存占用徐毅
本演讲主要介绍了Taichi新特性Packed Mode的设计。在Packed Mode下,Taichi不会自动将Field每一维的大小对齐到二的次幂,因此能有效降低本身大小不是二的次幂的Field的内存占用。本次演讲详细分析了二的次幂在Taichi Field实现过程中的使用(包括内存排布、坐标映射、Struct For到Range For的转化等),并讲解了如何不利用二的次幂进行等价的实现。
3.Dynamic Indexing:运行时自由访问向量与矩阵元素方燠
张量计算被广泛运用在物理仿真,真实感渲染和模型处理等多个领域。Taichi编程语言针对张量必须使用常数下标的这一限定,在优化性能的同时,也给代码实现增加了额外的限定,生成过量指令减缓编译。演讲从地址访存的角度出发,探讨了针对不同的变量类型,如何全面地支持动态下标,使太极语言更加完善。
4.Taichi的CI/CD系统张家声
Taichi作为一个社区的开源项目,是如何搭建起自己的CI/CD系统的?本次演讲主要分享了Taichi在搭建CI/CD的过程中遇到的问题以及解决方案。
5.与社区共建Taichi的Vulkan GPU后端余畅
本演讲主要分享了太极社区的开发者们如何协作完成Taichi Vulkan GPU后端的建设,在这个过程中遇到了一系列工程问题及解决方案,同时介绍了Taichi对于Unified Device API的未来规划。
6.Dynamic SNodes:在运行时灵活添加、删除Taichi Fields刘剑成
本篇演讲主要内容为介绍Taichi的新特性——动态申请和回收field。演讲基于简单的案例,简要分析了如何在Taichi中声明和使用数据结构SNodeTree,和Taichi是如何在即时编译以及运行时将声明的SNodeTree利用起来达到访存的目的的。在此之上,讲解了如何使用开发的FieldsBuilder类进行动态申请与回收field,并剖析了它在Taichi中的实现细节,分析了这种实现的优势,和已知的局限性,展望了未来可供进一步开发的方向。
一场开发者的交流盛会,一场期待已久的见面。穿越风雨,不辞路远。活动当天,开源社区共建计划、2022校招及太极图形课第一季也重磅官宣。太极人从办公室走到了用户中间,聆听所有的问题和建议,taichi也从高性能的编程语言走向了越来越广阔的世界。加入我们,或者关注我们的动态,成长中的太极邀请你一起拥抱生活的无限可能。taichi https://taichi-lang.cn/
|
|