通用物理引擎

时间:2010-03-01 19:49:51

标签: scientific-computing physics-engine

是否有任何通用物理引擎可以对刚体进行大量模拟?我正在使用来自Nvidia的PhysX,但这个引擎的重点是游戏开发,软体。我想知道是否存在运行在PS3单元处理器或CUDA核心之上的物理引擎,允许进行大规模的科学物理模拟。

2 个答案:

答案 0 :(得分:2)

没有“通用”物理库。例如。你能想象一个有用的手术软组织模拟,将相对论效应考虑在内吗?你可以想象几十个例子。

你谈论科学和刚体模拟,所以不清楚你想要多么逼真。刚体是近似的:没有什么是绝对僵硬的。但是如果在你的模拟中没有什么变形很多,并且你对摩擦和快速运动(对所有视频游戏都很常见)的一系列不切实际的近似很好,并且你想要开箱即用的解决方案,我怀疑运行Havok现代CPU将为您提供最佳性能。

PS / 3目前是最后一代。虽然我很喜欢在我的日常生活中为它编写物理,但我必须承认,具有6个内核的现代i7在理论上和实践中都能提供比单个Cell更高的性能。

CUDA目前是未经证实的物理技术。我没有写任何东西,但我对读者非常感兴趣:)如果你想要接近现代CPU的IPC(每循环比率指令),那么编写基于CUDA的物理学的挑战是非常重要的。不知道有谁成功地完成了这一点。如果你不接近基于CPU的物理学的IPC,那么CUDA物理学就没有意义,因为它需要更多的努力。

算一算:500美元的Kepler GPU拥有1536个核心@ 1GHz = 1.5 petaflops。价值590美元的Sandy Bridge CPU拥有6个内核/ 12个超线程AVX(8宽)@ 3.8GHz = 0.36千万亿次浮点运算。现在,如果你能够实现5比1的奇偶校验(平均使用5个GPU周期,1个CPU周期),理论上的CUDA物理将以与CPU物理相同的速度运行。现在,有效地使用12个超线程和AVX(8宽SIMD)并不容易。但是,在1536(!)CUDA线程中并行化物理任务,这些线程必须非常连贯并且以更加可控的方式使用内存,这也是不小的壮举。我不是说这是不可能的(而且我喜欢尝试它,但我有一份日常工作和其他宠物项目:))但物理社区需要一些时间来提供可扩展到数千个线程的东西。

最终速度提升只有5倍左右......)

无论如何,如果您自己编写SIM卡,并且您不想进行一般的刚体模拟,那么CUDA可能是您的朋友。例如。如果你想模拟银河系中所有恒星的运动,具有相对主义,但没有超新星和其他离散效应......很明显如何在1536(和更多)线程中传播它。但是,如果你想要拥有一大堆僵硬的身体,模拟游戏当前的方式,你就是运气不好

答案 1 :(得分:0)

Simbody多体动力学库用于包含数千个分子(刚体)的分子模拟。在Simbody的GitHub存储库中查看GIF:http://github.com/simbody/simbody

图书馆也被生物力学界大量使用来模拟人体运动。在这种情况下,人类被建模为刚体系统。

如果您正在寻找科学图书馆,那么您应该查看Simbody。但是,它尚未用于PS3单元处理器或CUDA核心。