加速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中的js?   java未来超时和IO超时   java apache camel多播以异步方式执行聚合   java需要710次尝试在Android和Raspberry Pi之间建立socket连接   在Java中使用“+,”循环绘制形状   java安卓:如何计算两点之间的距离   java多线程Hello World   刷新后缓存共享变量的java Freemarker模板   java我试图通过迭代用整数填充数组,但我得到了ArrayIndexOutOfBoundsException   JNI C++到java 32位图像的不正确显示   java哪个更快:克隆还是使用流?   java cache2k和Generic T不能很好地结合在一起   java如何在读取文件之前更新文件内容?   java如何在GWT中从JSNI方法调用JSNI方法   将MySQL类型文本映射到Java Hibernate的类型   java如何按长度对字符串排序   java RecyclerView:在滚动期间不断更改数据