x86/x64最適化勉強会7
非正規化数のFZ(FTZ)とDAZの違い
こういうモードがあるのは知らなかった。
極小同士の乗算でも普通にやるとゼロになってしまうものが、非ゼロ判定ができたりする。
いまどきのmatmul
行列の乗算の高速化。すごい。ロードと演算とストアがフル稼働。
TLBのキャッシュミスはトレースレジスタみたいなので調べたのかと思ったけど、そうではなくて少しずつ作り変えて色々試したらわかったらしい。強い。
CSS JIT: Just-in-Time Compiled CSS Selectors in WebKit (リンクはブラウザエンジン先端観測会のもの)
CSSのスタイルのマッチング処理がめちゃくちゃ重たいので、WebKitではJITで処理しているという話。CSSがそんなにCPUパワー食うと思ってなかった。
広告をあれするやつとかが重いらしい。スライドには出てこなかったがhasは恐ろしく重いらしい。
改ざん検知暗号Minalpherの設計とIvy Bridge/Haswellでの最適化
暗号化と改ざん検出はセットでやらないといけないらしく、Authenticated Encryptionというジャンルが確立している。規格案のコンペCAESAR competitionにMinalpherを提案したとのこと。
実行スロットにフルで詰め込む実装。スケジューリングが職人芸というかCPUの気持ちになってる。
デファクトスタンダードのAES-GCMはCTRモードをベースにして、カウンタに多項式を使ったもののようだ。かなり高速で1clock per byteくらい出るらしい。
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
Somewhat準同形暗号の話。普通の準同形暗号は加算(XOR)か乗算(AND)のどちらかしかできないが、両方できると相関を取るようなこともできるので、生体認証もいけるぽい。
後者(多倍長整数)の説明で、こちらは整数演算と説明されていて、多項式演算のほうは整数演算じゃないのかな、と思ったら、(浮動小数点ではなく)整数を使った計算ではあるものの、多項式演算で通じるのでそういうものらしい。数の範囲とか性質とかで区別されているのだろうか。
ものすごい計算をするけど1単位にストアできる情報が60bitとかそのくらい。すごい。
LLVM最適化のこつ
キャリーフラグっぽく書いたらだめで、なしで書いたらちゃんとキャリーを使ってくれたみたいな話。
LLVMのアセンブリ出力が手で書いたのと同じになるまでがんばるというのがなんか順番が間違っていて面白い。
感想
毎度のごとく難しかったが、素晴らしい会でした。堪能しました。