2

我将 numpy 用于数值线性代数。例如,我怀疑如果我对执行某些计算的方式进行一些小修改,从而提高内存效率,我可以获得更好的性能。

我想知道 python 中是否有任何形式的工具来检测缓存和 TLB 未命中。有一个非常好的 api,PAPI,我在最近的课程中了解到,但它没有 Python 接口:

http://icl.cs.utk.edu/papi/overview/index.html

另外,一般有没有一种很好的方法来分析 numpy 或其他 python 数字代码?timeit 模块很难集成到代码中。mpi4py 有一种很好的方式来使用 MPE 库进行分析。演示代码片段 (demo/mpe-logging/cpilog.py):

communication   = MPE.newLogState("Comunicate",  "red")
with communication:
    comm.Bcast([n, MPI.INT], root=0)

将创建一个可以以图形方式显示的日志文件。但这有点特定于 MPI。

谢谢。

4

2 回答 2

1

也许提供的分析器之一可能会帮助您找到热点?

请参阅分析 python

这些可能不会提供足够的细节来触发直接行动,但应该指出在哪里寻找改进并帮助确定收益递减点。

于 2010-06-19T20:21:26.143 回答
1

Robert Kern(NumPy 开发人员之一)正是针对这种情况编写了line_profiler。它比热点/cProfile 更适合分析 NumPy 繁重的代码。

于 2010-06-19T21:16:50.530 回答