谁能推荐一些允许在 Python 中使用 CUDA 进行数值积分和/或求解微分方程的库?
我的目标是求解大型(约 1000 个方程)耦合非线性常微分方程,我想使用 CUDA。
谁能推荐一些允许在 Python 中使用 CUDA 进行数值积分和/或求解微分方程的库?
我的目标是求解大型(约 1000 个方程)耦合非线性常微分方程,我想使用 CUDA。
Julia 的DifferentialEquations.jl都与GPU 兼容。如果您使数组基于 GPU 的数组,则求解器将重新编译为全部在 GPU 上(无数据传输)。例如:
using OrdinaryDiffEq, CUDA, LinearAlgebra
u0 = cu(rand(1000))
A = cu(randn(1000,1000))
f(du,u,p,t) = mul!(du,A,u)
prob = ODEProblem(f,u0,(0.0f0,1.0f0)) # Float32 is better on GPUs!
sol = solve(prob,Tsit5())
都是基于GPU的。您可以通过diffeqpy从 Python 中使用它。目前没有太多好的语法将 GPU 使用暴露给 Python,但您可以使用以下方法来做同样的事情:
import diffeqpy
diffeqpy.install()
from diffeqpy import de
sol = Main.eval("""
using CUDA, LinearAlgebra
u0 = cu(rand(1000))
A = cu(randn(1000,1000))
f(du,u,p,t) = mul!(du,A,u)
prob = ODEProblem(f,u0,(0.0f0,1.0f0)) # Float32 is better on GPUs!
sol = solve(prob,Tsit5())
Array(sol) # Return an array
""")
请注意,这需要在您的 Julia 安装中安装 CUDA。