6章行列とベクトルの計算
6章を読めば以下の問いに答えられるようになる
- ベクトルの計算でボトルネックとなる箇所はどこか?
- CPUの計算効率を調べるツールには何があるか?
- なぜ
NumPy
はPythonだけで書くより数値計算が得意なのか? - キャッシュミスとページフォールトとは何か?
- コード上のメモリ確保を追跡する方法は?
どのような問題であろうと、コンピュータで解決しようとすれば、どこかでベクトルの計算が絡むものです。ベクトルの計算は、コンピュータの動作やハードウェアのレベルまで考慮してプログラムの実行時間を短縮するのに欠かせません。コンピュータが知っていることは数値演算だけです。そのため、一度に複数の計算をする方法がわかれば、プログラムを高速化するのに役立ちます。
本章では、拡散方程式を解くという比較的単純な数学的問題をテーマに、CPUレベルでの動作を理解することで、ベクトル計算の複雑さを明らかにします。コードの変化がCPUに与える影響を理解し、効率よく精査する方法を知ることで、他の問題も理解できるようになります。
まず、扱う問題を紹介し、Pythonだけで解いてみます。発生するメモリの問題をPythonだけで解決したら、NumPy
を導入し、コードが高速になる仕組みと理由を示します。次に、アルゴリズムを変更して、NumPy
で問題を解決できるようにします。ここではNumPy
の持つ汎用性の一部を除去することで、コードをさらに高速化できることを示します。そのあと、一連の作業を支援する外部モジュールを導入し、プロファイリングせずに最適化することの危険性を述べます。
最後に、Pandasを紹介します。Pandasは、NumPy
をベースに、同種のデータの列を取り、違う型のテーブルに格納します。Pandasは純粋な ...
Get ハイパフォーマンスPython 第2版 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.