加速CPU和GPU上的模板计算
pystencils的Python项目详细描述
pystencils
在numpy数组上运行极其快速的模板代码。
pystencils使用sympy定义可以在numpy数组上执行的模板操作。 利用模板结构使得pystencils比正常的numpy代码运行得更快,甚至像cython和numba一样, as demonstrated in this notebook。
下面是计算相邻单元格平均值的代码片段:
importpystencilsaspsimportnumpyasnpf,g=ps.fields("f, g : [2D]")stencil=ps.Assignment(g[0,0],(f[1,0]+f[-1,0]+f[0,1]+f[0,-1])/4)kernel=ps.create_kernel(stencil).compile()f_arr=np.random.rand(1000,1000)g_arr=np.empty_like(f_arr)kernel(f=f_arr,g=g_arr)
pystencils主要用于使用有限差分或有限体积方法的数值模拟。 它带有PDE的自动有限差分离散化功能:
c,v=ps.fields("c, v(2): [2D]")adv_diff_pde=ps.fd.transient(c)-ps.fd.diffusion(c,sp.symbols("D"))+ps.fd.advection(c,v)discretize=ps.fd.Discretization2ndOrder(dx=1,dt=0.01)discretization=discretize(adv_diff_pde)
查看documentation了解更多信息。
安装
pip install pystencils[interactive]
如果没有[interactive]
,您将得到一个依赖关系非常小的最小版本。
所有选项:
gpu
:如果nvidia gpu可用且cuda已安装,请使用此选项alltrafos
:引入额外的依赖项以简化循环,例如libislbench_db
:在对象数据库中存储基准结果的功能interactive
:安装在jupyter中工作的依赖项,包括图像I/O、绘图等。doc
:构建文档的包
可以组合选项,例如
pip install pystencils[interactive,gpu,doc]
文档
阅读文档here和
查看doc/notebooks
中的jupyter笔记本。