EVA Improved: Compiler and Extension Library for CKKS

2. Improved EVA

2.2 Making Passes Easy to Write

EVAはIRをループフリーなDAGとして書くことでパスを簡単に書けるように

2.4 Raw Type and Encoding Insertion

  • ciphertextとplaintextに加えてraw(固定長ベクトル)を加えた
  • 暗号文との演算時にencodeノードが挿入される

2.5 Common Subexpression Elimination

  • CSE: 等価な部分式をメモ化する

image

畳み込み演算を2回呼び出すがline 5で同じ回転を行うがCSEにより最適化されるのでそのまま書けば良い

2.6 Reduction Balancing

よりも乗法深さが浅いのでよい
バランスの取れた2分木に戻すパス

3. EVA Extension Library

3.1 Why an Extenstion Library

内積を考えると回転と加算を行う

naive: 回回転演算
opt: 回転

3.2 Horizontal Sum

3.3 Vector and Matrix

  • SEALベクトルよりEVAベクトルが小さい

EXLベクトル

任意の長さの配列を扱うとき例えば とだと処理に時間がかかりすぎるので複数のEVAベクトルに分割する.
計算も分割する、

行列を対角線に分割するというよく知られた方法で積を実装した

3.4 Vector Size and Program Generators

EVAベクトルがSEALベクトルよりも小さいときはベクトルをrepeatして合わせるので冗長な計算になる