【问题标题】:Instrumentation for numerical linear algebra in PythonPython中数值线性代数的检测
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • 谢谢,这很有帮助。
【解决方案2】:

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

profiling python

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-27
    • 2017-08-17
    • 2019-04-05
    • 1970-01-01
    • 2016-03-11
    • 2020-05-24
    相关资源
    最近更新 更多