【发布时间】:2011-03-05 20:36:59
【问题描述】:
我将 numpy 用于数值线性代数。例如,我怀疑如果我对执行某些计算的方式进行小幅修改以提高内存效率,我可以获得更好的性能。
我想知道 python 中是否有任何形式的工具来检测缓存和 TLB 未命中。有一个非常不错的 api,PAPI,我在最近的课程中了解到,但它没有 Python 接口:
http://icl.cs.utk.edu/papi/overview/index.html
另外,一般来说有没有一种很好的方法来分析 numpy 或其他 python 数字代码? timeit 模块很难集成到代码中。 mpi4py 有一种使用 MPE 库进行分析的好方法。来自演示代码的 sn-p (demo/mpe-logging/cpilog.py):
communication = MPE.newLogState("Comunicate", "red")
with communication:
comm.Bcast([n, MPI.INT], root=0)
创建一个可以以图形方式显示的日志文件。但这有点特定于 MPI。
谢谢。
【问题讨论】:
-
关于你问题的“更好的性能”部分,你实际上在做什么——什么 numpy 函数,什么 vec / 数组大小,什么缓存大小?
-
大多数密集矩阵乘以矩阵大小,从缓存大小到更大。
标签: python numpy scipy linear-algebra instrumentation