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