0

不久前,我在这里发布了一个关于我正在尝试使用 pycuda 构建的模型,该模型解决了大约 9000 个耦合 ODE。然而,我的模型太慢了,一位 SO 成员建议从主机到 GPU 的内存传输可能是罪魁祸首。

现在 cuda 仅用于计算我正在处理的 9000 个物种中的每一个的变化率。由于我将一个数组从主机传递到 GPU 以执行此计算并从 GPU 返回一个数组以集成到主机上,因此我可以看到这会如何减慢速度。

boost会解决我的问题吗?根据我的阅读,boost 允许 c++ 和 python 之间的互操作性。它还包括我读过的 c++ odeint ,与推力合作允许在 GPU 上快速减少和集成。我的理解正确吗?

谢谢你,卡斯滕

4

1 回答 1

2

是的, boost.odeint 和 boost.python 应该可以解决您的问题。您可以将 odeint 与 Thrust 一起使用。还有一些 OpenCL 库(VexCL、ViennaCL)可能比 Thrust 更容易使用。查看这篇论文以了解 GPU 上 odeint 的比较和用例。

Boost.python 可以做 C++ 应用程序和 Python 之间的通信。另一种方法是一个非常苗条的命令行应用程序来解决 ODE(使用 boost.odeint),它完全由你的 python 应用程序控制。

于 2013-05-23T06:01:23.170 回答