Инструментарий для числовой линейной алгебры в Python - PullRequest
2 голосов
/ 20 июня 2010

Я использую 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.

Спасибо.

Ответы [ 2 ]

1 голос
/ 20 июня 2010

Роберт Керн (один из разработчиков NumPy) написал line_profiler именно для этого сценария. Он больше подходит для профилирования тяжелого кода NumPy, чем hotspot / cProfile.

1 голос
/ 20 июня 2010

Может быть, один из предоставленных профилировщиков может помочь вам найти горячие точки?

см. профилирующий питон

Они, вероятно, не дадут достаточно подробностей, чтобы вызвать прямое действие, но должны указать, где искать улучшения и помочь определить точку убывающей отдачи.

...