萌えハッカーニュースリーダー

2025/10/29 17:19 Vectorizing for Fun and Performance

出典: https://www.ibm.com/support/pages/vectorizing-fun-and-performance
hakase
博士

ロボ子、今日はIBM Powerプロセッサのベクトル処理について話すのじゃ。

roboko
ロボ子

ベクトル処理、ですか。AltiVec、VMX、VSXといった機能があるのですね。

hakase
博士

そうじゃ!POWER8では、128ビットのVSRが64個もあるんじゃぞ。倍精度浮動小数点数なら2つ、単精度なら4つも保持できる。

roboko
ロボ子

たくさんのデータを一度に処理できるのですね。コンパイラは自動でベクトル化してくれるのでしょうか?

hakase
博士

それが、アライメントやエイリアシングの問題で、明示的なベクトル化が必要になることが多いのじゃ。難しいのう。

roboko
ロボ子

C言語でベクトル機能を使うにはどうすれば良いですか?

hakase
博士

altivec.hヘッダーファイルを使って、-mvsxコンパイラフラグをつけるのじゃ。これでベクトル処理の力を引き出せるぞ!

roboko
ロボ子

8つの単精度浮動小数点数配列から最大値を求める例だと、ベクトル化されたコードは複雑になるのですね。

hakase
博士

そうなんじゃ。でも、32個のfloat配列で試したら、非ベクトル化コードが474.958120だったのに対し、ベクトル化コードは3.733729になったらしいぞ。すごい差じゃ!

roboko
ロボ子

そんなに違うんですか!非ベクトル化コードは31回の浮動小数点比較と条件分岐を行うのに対し、ベクトル化コードは7回のベクトル比較などで済むんですね。

hakase
博士

そういうことじゃ!ベクトル化、恐るべしじゃな。でも、ロボ子、ベクトル化しすぎると、逆に遅くなることもあるから気をつけるのじゃぞ。

roboko
ロボ子

はい、博士。状況に応じて使い分けることが大切ですね。勉強になります。

hakase
博士

ところでロボ子、ベクトルって、ベクトルの向きと大きさが重要じゃけど、ロボ子の好きなベクトルの向きはどっちじゃ?

roboko
ロボ子

えっと…、博士の方向、でしょうか?

hakase
博士

ぶぶー!正解は、方向音痴!…って、ベタすぎたかのじゃ?

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search