3

我有一个使用Bullet物理引擎编写的应用程序。我在具有 8 个内核的 Intel i7 2600K CPU 上运行它。应用程序必须处理数百万块物理工作,每一个都可以独立完成。它目前运行8 个进程,每个进程独立完成其总配额。总之,这项工作有很多简单的并行性

假设我可以获得最好的 NVIDIA 消费级显卡(比如 Titan),那么通过从 CPU 上的 Bullet 切换到GPU 上的Physx ,我可以看到物理引擎性能的大致改进是什么?也就是说,如果为 Physx 重写,这个应用程序的运行速度大约会快多少?

我找到了几篇比较 Bullet 和 Physx 之间结果质量的论文,但找不到关于性能比较的任何内容。

4

3 回答 3

3

Pierre Terdimann在 Bullet 2.81 和 PhysX 2.8.4、3.2 和 3.3 之间进行了一系列广泛的性能比较。这些是 Bullet 和 PhysX 之间的比较,两者都在 CPU 上运行。可以看出,两者的性能差异取决于所使用的引擎的哪些特性。对于一些功能,性能大致相同,而对于大多数其他功能,速度提高了 3-5 倍。

他还在附录中提到并非所有物理特性都已移植到 GPU 上的 PhysX。布料和粒子可以在 GPU 上加速,而刚体目前正被移植到 GPU,这称为GPU 刚体(GRB)。如果有一个特性是 GPU 加速的,那么你可以期望它比 CPU 更快,但具体速度是多少还不清楚。

于 2013-05-30T02:36:23.193 回答
2

我发现了这一点,这不是与任何特定 CPU 物理引擎的比较,而是希望它们与同类比较并在 CPU 上运行 PhysX。

因此,它相当不具体,并且来自 PhysX 制造商的常见问题解答,因此请多加一点盐。

这里

在中高端 GeForce GPU 上运行 PhysX 将实现比在高端 CPU 上运行物理高 10-20 倍的效果和视觉保真度。

于 2013-05-23T07:24:38.933 回答
1

可以说 physx 正在进行粒子相互作用,例如流体运动的重力。然后缓存控制非常重要,因为它们是并行的。您不能直接控制 CPU 的缓存,但可以访问 Titan 的缓存,这可能比 8 线程 CPU 快 100 倍。

如果它不是那么并行并且有很多分支并且没有耗尽计算,那么它大约是 10x-5x 加速(或图形内存 / 主 RAM 的任何带宽比)。

于 2013-05-24T15:12:18.593 回答