マガジンのカバー画像

行列積計算を高速化してみた

30
数値計算ライブラリBLASに含まれる行列積ルーチンDGEMMを高速化していく手順を記した記事「行列積計算を高速化してみる」の章ごとに分割した記事をまとめたマガジンです。元の記事は…
運営しているクリエイター

#プリフェッチ

はじめに|行列積高速化#0

以前書いた行列計算DGEMMを高速化する記事が、あまりに長すぎた(20万文字以上)ので、記事あたり1万字以内を目安に、章ごとに記事を分割することにしました。 元の記事が有料記事のため、高速化の重要なカギになる章は有料にさせていただいています。全記事をご購入いただくと1000円になります。元の記事は560円ですので、全ての章を読むなら元の記事の方が割安になっています。一部の章は元の記事で有料部分に含まれていましたが、分割したので無料でもお読みいただけるようになりました。 元

もう少し高速になりました。|行列積高速化#29

前回の記事で、OpenBLASよりも7~8%性能が劣っていました。その後、いろいろ試していたのですが、2~4%ほど高速になったので、性能が向上したポイントを記録しておこうと思います。 ピーク性能比率でみると95~97%、FLOPS値でみるとおよそ45GFLOPSくらいなりました。それでも、OpenBLASよりも劣っているので、まだ工夫の余地はあるのでしょう・・・。 プリフェッチの見直しカーネル関数のプリフェッチに関しては第18回で書いていますが、第25回でカーネル関数を書

プリフェッチの挿入|行列積高速化#18

この記事は、以下の記事を分割したものです。 [元の記事]行列積計算を高速化してみる 一括で読みたい場合は、元の記事をご覧ください。 次に、メインメモリからキャッシュメモリにデータを運んでおくために、プリフェッチを挿入します。プリフェッチには、ハードウェア・プリフェッチとソフトウェア・プリフェッチがあります。 ハードウェア・プリフェッチ = CPUが自動的に行うプリフェッチ ソフトウェア・プリフェッチ = プリフェッチ命令で行うプリフェッチ プリフェッチ命令は自由に挿入で