Luc*_*cas 6 scientific-computing physics-engine
是否有任何通用物理引擎允许对刚体进行大量模拟?我正在使用来自Nvidia的PhysX,但这个引擎的重点是游戏开发,软体.我想知道是否存在运行在PS3单元处理器或CUDA核心之上的物理引擎,允许进行大规模的科学物理模拟.
不存在“通用”物理库。例如,您能想象一种将相对论效应考虑在内的有用的手术软组织模拟吗?你还可以想象更多的例子。
你谈到了科学模拟和刚体模拟,所以不清楚你想要有多现实。刚体是一种近似值:没有什么是绝对刚性的。但是,如果你的模拟中没有任何变形,并且你可以接受一堆不切实际的摩擦和快速运动近似(所有视频游戏都很常见),并且你想要开箱即用的解决方案,我怀疑在现代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 petaflop。现在,如果您能够实现 5 比 1 奇偶校验(平均使用 5 个 GPU 周期对应 1 个 CPU 周期),您的理论 CUDA 物理将以与 CPU 物理相同的速度运行。现在,有效地使用 12 个超线程和 AVX(8 宽 SIMD)并不是一件容易的事。但是,跨 1536 个(!)CUDA 线程并行化物理任务也不是一件容易的事,这些线程必须非常一致,并且以更加受控的方式使用内存。我并不是说这是不可能的(我很想尝试一下,但我有一份日常工作和其他宠物项目:)),但物理社区需要一些时间才能提出可跨数千个线程扩展的东西。
最终速度提高了 5 倍左右...:)
无论如何,如果您自己编写 sim,并且您不想要一般的刚体模拟,那么 CUDA 可能是您的朋友。例如,如果您想模拟银河系中所有恒星的运动,具有相对论,但没有超新星和其他离散效应...很清楚如何将其传播到 1536 个(以及更多)线程。但如果你想要一座刚体山,以与目前游戏相同的方式进行模拟,那么你就不走运了