太极语言的竞争对手分析

事情是这样的

  • 太极图形的公众号,四月份写了一篇文章《与CUDA 相比Taichi 跑得快不快》
  • 结论是大部分情况一致,少数情况taichi编译器优于cuda手工实现

taichi

  • 太极的优势在于“多后端”,“上手简单”,“代码量少”
  • 而近一段时间,我也关注了一些其他的方向的新语言,它们也在试图做一些太极做的事

通用着色语言Slang

  • taichi的特点之一多后端,很容易写成通用shader,之前我还想做一个输入shadertoy网址,转成taichi代码的demo,论坛里也有不少同学移植了shadertoy的示例
  • Slang是英伟达在实时光追Falcor引擎中使用的语言,它能后实现输入任意shader语言(包括自己slang),

  • 输出任意后端的gpu机器码

  • 但该语言依旧需要学习者具备gpu架构,着色器基本知识,甚至还需要了解dxc,nvcc, spir-v是啥,上手难度大

物理仿真语言Warp

  • 英伟达似乎觉得taichi开发的很好,于是搞了一个对标taichi的类python语言warp
  • 作者也是nvidia的大佬 Miles Macklin,物理仿真team首席工程师(Principal Engineer,不知道这么翻译对不对)
  • 然后我截一些slides的数据,其中就有和taichi的对比

  • 代码风格和taichi也完全一模一样

  • 然后他有一点taichi没有的好处,就是他和nvidia自家的omniverse平台互通,仿真完成后,可以直接在omniverse中预览,支持很多mesh,vdb等输入,可视化就很方便

动画11

总结

语言 taichi slang warp
跨平台 ×
易用性 ×
可微 ×
机器码导出
可视化 × ×
  • 总体而言taichi优势是更加全面,但缺点在于没有很好的一些工具或者平台承载,比如omniverse或者usd这样的标准格式,当然我看taichi的project中有ti.Mesh的开发计划,我觉得未来应该taichi也会迎头赶上。
2 个赞

有意思,他们放出来的布料模拟的gif图效果不错,但是没有相关的源码。

1 个赞

布料仿真的示例在:

这个示例加载了nv_humanoid.xml文件,里面人物通过capsule胶囊体创建成sdf
这里我跑了一个和视频中的一样效果的示例(布料仿真跑崩溃了,待我去提个issue)
11

原理上应该是airMeshsdfconact论文的实现,作者是Matthias Muller和Miles Macklin

另外关于布料仿真,Matthias Muller最近的视频阐述了如何减少布料自相交的技巧(虽然无法完全避免)

1 个赞

厉害了。之前没跑过humanoid这个。 Matthias Muller的十分钟物理那个系列看了,多年的经验总结出来的简单有效的模拟算法,收获挺多,自相交通过点-点碰撞来做,对于网格均匀(边长一致)的布料效果还是挺不错的。

1 个赞

跑了一下humanoid这个示例,就是一个胶囊体的人的刚体仿真,不是布料模拟。

骚瑞,这个示例打不开,误导你了。
表达欲有点强,见谅 :grinning: 那就只能看看作者的论文咯,
22

他在GTC的教程里,有提到这个布料仿真使用了这个研究成果,大致就是如何迭代求解精确找到
一个点到某个sdf的最近点,他还在shadertoy上写了个示例
这样就可以实现精确碰撞了。
关于如何实现sdf之类的,我现在还在研究中,后面有时间我会用taichi写个demo

Fenics 现在不考虑在内吗

孤陋寡闻了,Fenics是一门语言还是插件呀?
我查了一下,项目是这个吗?
看起来是有限元仿真的,FE两个首字母瞬间想到FEM
打开项目首页,看起来又像解决偏微分方程的工具包?因为我看它底层依赖某些BLAS(Basic Linear Algebra Subprograms)线性代数组件
:smiling_face_with_tear:能介绍一下下不,很感兴趣!!!

1 个赞