我不久前在这里发布了关于我正在尝试使用pycuda构建的模型,该模型解决了大约9000个耦合的ODE。我的模型太慢了,SO成员建议从主机到GPU的内存传输可能是罪魁祸首。
目前,cuda仅用于计算我正在处理的9000种物种的变化率。由于我从主机传递到GPU以执行此计算并从GPU返回一个阵列以集成到主机上,因此我可以看到这会减慢速度。
提升是解决我的问题的方法吗?根据我的阅读,boost允许c ++和python之间的互操作性。它还包括c ++ odeint,我读过,与推力合作允许快速减少和集成在GPU上。我的理解是否正确?
谢谢你, 卡斯滕
答案 0 :(得分:2)
是的,boost.odeint和boost.python应该可以解决您的问题。你可以在推力上使用odeint。还有一些OpenCL库(VexCL,ViennaCL)可能比Thrust更容易使用。有关比较和GPU上odeint的用例,请查看thist paper。
Boost.python可以在C ++应用程序和Python之间进行通信。另一种方法是用于解决ODE(使用boost.odeint)的非常简单的命令行应用程序,它完全由您的python应用程序控制。