加速CPU和GPU上的模板计算

pystencils的Python项目详细描述


pystencils

BinderDocspipeline statuscoverage report

在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:引入额外的依赖项以简化循环,例如libisl
  • bench_db:在对象数据库中存储基准结果的功能
  • interactive:安装在jupyter中工作的依赖项,包括图像I/O、绘图等。
  • doc:构建文档的包

可以组合选项,例如

pip install pystencils[interactive,gpu,doc]

文档

阅读文档here和 查看doc/notebooks中的jupyter笔记本。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java我试图使用@OneToOne作为双向映射来映射实体,但却遇到了奇怪的异常   性能Java异步如何工作?异步方法似乎不是异步运行的   java这个代码可以更短吗   线程“main”Java中的csv Java ArrayList异常。lang.NegativeArraySizeException:28   java确定LayoutManager预布局中的显示视图   java如何在FirestorePagingAdapter中通过方法onLoadingStateChanged隐藏/显示进度条?   在Java中,如何打印一个类似于中间有“过道”的座位表的2d数组?   http Java实现字节范围服务,而不使用仅使用Java api的servlet   java无法使用命名根元素生成json   java如何在注销侦听器中获取http会话id?   数组内部输入(java)?   java如何为特殊情况提供更简单的构造函数   java在swing应用程序中显示JavaFX后台   java如何启用系统。出来在eclipse中运行Junit测试时使用println()?   如何在Java中实现Oracle用户定义的聚合函数