2

数値線形代数には numpy を使用します。たとえば、特定の計算を実行する方法を少し変更して、メモリ効率を向上させると、パフォーマンスが大幅に向上すると思います。

キャッシュと TLB のミスを検出するために Python で利用できる何らかの形式のインストルメンテーションがあるかどうか疑問に思っていました。最近のクラスで学んだ非常に優れた 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

提供されているプロファイラーの 1 つが、ホットスポットを見つけるのに役立つかもしれません。

プロファイリング pythonを参照してください

これらはおそらく、直接的な行動を起こすのに十分な詳細を提供するものではありませんが、改善を探すべき場所を示し、収穫逓減のポイントを決定するのに役立つはずです.

于 2010-06-19T20:21:26.143 に答える
1

Robert Kern (NumPy 開発者の 1 人) は、まさにこのシナリオのためにline_profilerを作成しました。hotspot/cProfile よりも、NumPy を多用するコードのプロファイリングに適しています。

于 2010-06-19T21:16:50.530 に答える