Scientific computing 通用物理引擎

Scientific computing 通用物理引擎,scientific-computing,physics-engine,Scientific Computing,Physics Engine,有没有通用的物理引擎可以对刚体进行大规模模拟?我使用的是Nvidia的PhysX,但是这个引擎的重点是游戏开发,软体。我想知道是否存在运行在PS3 cell处理器或CUDA内核之上的物理引擎,允许进行大规模科学物理模拟。没有“通用”物理库。例如,你能想象一个考虑相对论效应的有用的外科软组织模拟吗?你可以想象更多的例子 你谈论科学和刚体模拟,所以不清楚你想要多逼真。刚体是一种近似:没有任何东西是绝对刚性的。但是如果你的模拟中没有什么变形,你对摩擦和快速运动(所有视频游戏都有)的一些不切实际的近似很

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

没有“通用”物理库。例如,你能想象一个考虑相对论效应的有用的外科软组织模拟吗?你可以想象更多的例子

你谈论科学和刚体模拟,所以不清楚你想要多逼真。刚体是一种近似:没有任何东西是绝对刚性的。但是如果你的模拟中没有什么变形,你对摩擦和快速运动(所有视频游戏都有)的一些不切实际的近似很满意,并且你想要开箱即用的解决方案,我怀疑在现代CPU上运行Havok会给你带来最好的性能

PS/3是目前的最后一代。虽然我很喜欢在我的时代为它写物理书,但我必须承认,具有6核的现代i7在理论上和实践上都比一个电池性能更好

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

算算一下:一个500美元的开普勒GPU有1536个内核@1GHz=1.5 PB。一个590美元的桑迪桥CPU具有6核/12超线程AVX(8宽)@3.8GHz=0.36petaflop。现在,如果您能够实现5对1奇偶校验(1个CPU周期平均使用5个GPU周期),那么您的理论CUDA物理将以与CPU物理相同的速度运行。现在,有效地使用12个超线程和AVX(8宽SIMD)并不容易。但是,在1536(!)个CUDA线程之间并行物理任务,这必须是非常连贯的,并且以更可控的方式使用内存,这也不是一个小壮举。我并不是说这是不可能的(我很想尝试一下,但我有一天的工作和其他的宠物项目:),但物理社区要想想出一个跨越数千个线程的可伸缩的东西还需要一段时间

最后,速度提高了5倍左右……)


无论如何,如果你自己写的sim卡,你不想一个一般的刚体模拟,那么CUDA可能是你的朋友。例如,如果你想用相对论来模拟银河系中所有恒星的运动,但不考虑超新星和其他离散效应。。。如何在1536(或更多)个线程中传播这一点非常清楚。但是,如果你想拥有一堆刚体,就像游戏目前所做的那样进行模拟,那你就太倒霉了。

Simbody多体动力学库用于包含数千个分子(刚体)的分子模拟。请参阅Simbody的GitHub存储库中的GIF:

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

如果你正在寻找一个科学图书馆,那么你应该看看Simbody。但是,它尚未在PS3单元处理器或CUDA内核上使用