論文のテーマ

この論文では効率的な並列ソーティングがテーマになっている。 並列ソーティングでは、ソートした結果を各プロセッサーに配布する必要があるが、この配布の仕方には2種類存在する。

この論文では、ϵ\epsilon-balanced partitonのアルゴリズムについて考える。

並列でのソーティングには以下の2種類の大きな種類がある

partition-based sorting algorithmsでは、元データを均等に分割するパーティションを決定し、そのパーティションに基づいてデータを再配布することによってソートを行う。 partition-based sorting algorithmsには、merge-basedに比べてコミュニケーションコストが低いため、現代のアーキテクチャに向いているという利点がある。 既存の最先端の並列ソーティングのアルゴリズムでは、samplingとhistogramingというテクニックが利用されている。 この論文では、samplingとiterative histogramingを組み合わせてpartitionを探索するHistogram sort with sampling(HSS)を提案している。 このアルゴリズムは、既存の最も良いアルゴリズムに対して、Θ(log(p)/loglog(p))\Theta(\log(p)/\log\log(p))分の1のコミュニケーションコストでpartitionを発見することができる。

問題定義

各プロセッサーppN/pN / p個のキーを持つ。
注意点

ii番目のプロセッサーはソート済みのシーケンスI(0),,I(N1)I(0), \dots, I(N - 1)ii番目のサブシーケンスを持つようにキーを再分配することがアルゴリズムのゴール

並列ソーティングでは、ソート後のキーの分布についてバランスが取れていることを求められるのが一般的である。 バランスについての制約には以下の2種類が存在する

locally balancedでは、各プロセッサーは(1+ϵ)N/p(1 + \epsilon)N/pより多くのキーを持たない。
globally balancedは、locally balancedよりも強い制約で以下の条件を各プロセッサーが満たす必要がある。

S(i)=I(χ(i)) withχTiTi=[Ni/pNϵ/2p,Ni/p+Nϵ/2p]S(i) = I(\chi(i))\ with \\ \chi \in T_i \\ T_i = [N_i / p - N\epsilon / 2p, N_i / p + N\epsilon / 2p]

このときプロセッサーiiは、S(i)S(i)以上かつS(i+1)S(i + 1)よりも小さいすべてのキーを持っていなければいけない。 この論文のアルゴリズムはglobally balanced distributionを達成する。 繰り返しアルゴリズムにおけるglobally balanced distributionの利点は、初期の分布がほぼソートされていてかつglobal balancedの場合、データの交換ステップのコミュニケーションが少ないこと

先行研究12で、どちらの分布のもとでもexact splittingが得られることは証明されている。しかし、locally balancedの場合は、自身が持っているデータすべてを1つか2つのプロセッサーと交換しなければならないプロセッサがー存在するかもしれないのに対して、globally balancedの場合は、各プロセッサーにおいて交換が必要なキーの数はたかだかNϵ/pN\epsilon/pとなる。よって、根本的な違いとしては、アルゴリズムの全実行時間においてload balanceが維持されているかになる。

この研究では、partition-based sorting algorithmにおけるdata-partitionステップに注力する。 partition-based sorting algorithmには以下が存在する

先行研究

Sample sort

スタンダードなよく研究されていてる並列ソートアルゴリズム
各プロセッサーでss個のkeyをサンプリングし、1つのプロセッサーにすべてのサンプルを集める。サンプルを集めたプロセッサーは、サンプルをからp1p - 1個のキーをsplitterとして選択する。

一般的にSample sortは下記の3つのフェーズで構成される

  1. Sampling Phase
  2. Splitter Determination
  3. Data Exchange

Sample sort: Sampling methods

Sample sortで利用される2種類のsampling methodsについて取り上げる。

Random sampling

random samplingでは、各プロセッサーは自身が持つソート済みの入力をss個のブロックに分割し、各ブロックから1つランダムにキーを選択する。ssはoversampling ratioと呼ばれる。 splitterは集めたサンプルを均等に分割するように選択される。 先行研究で以下の定理が示されている

Theorem 3.1
With O(plogN/ϵ2)O(p\log N/\epsilon ^2) samples overall, sample sort with random sampling achives (1+ϵ)(1 + \epsilon) load balance w.h.p..

Regular sampling

regular samplingでは、各プロセッサーは自身が持つソート済みの入力を均等に分割するss個のキーを計算し、サンプルとする。そのサンプルを1つのプロセッサーに集め再度splitterを計算する。これについても先行研究1,2が存在し、以下の定理が示されている

Theorem 3.2 If s=p/ϵs = p / \epsilon is the oversampling ratio, then sample sort with regular sampling achieves (1+ϵ)(1 + \epsilon) load balance.

samplingサイズの大きさから、regular samplingではsampling phaseはスケールしない。random samplingはより効率的だが、それでもload-balanced splittingを達成するためには大きなサンプルサイズが必要になるため、こちらもスケーラビリティは低い。

Histogram Sort

histogram sortは、splittersを決定するために大きなサイズのサンプルを利用するのではなく、splitterが存在するキーの区間を管理する。アルゴリズムの実行を繰り返すことで、この区間の範囲を狭めていき、全splitterの区間が所定の閾値よりも小さくなったら、splitterを確定する。データの交換フェーズはsample sortと同じ。

histogram sortの流れ

  1. セントラルプロセッサーはM個のソートされたキーで構成されたprobeを全プロセッサーに配布する
  2. 各プロセッサーはprobeのキーによって作られる区間に自身の入力が何個含まれるかをカウントする
  3. ローカルヒストグラムを足し合わせて、グローバルヒストグラムを計算する。(MM-item reduction)
  4. もし、p1p - 1個のsplitterに対する十分小さい区間が見つかったら、セントラルプロセッサーはsplitterを確定し、ブロードキャストする。それ以外の場合は、ヒストグラムを利用してprobeを更新し配布し、splitterを決定するまで繰り返す

probeの改良は、ヒストグラムで隣接する区間を分割することで行われる。 Histogram sortは、任意のレベルのload balanceを実現することができ、各ラウンド使用するヒストグラムのサイズはO(p)O(p)程度となっており比較的小さいため、スケールさせることができる。しかし、ラウンド数は大きくなる可能性があり、特にデータの分布に偏りがある場合に顕著になる。ZZを入力の範囲とすると、ラウンド数はたかだかlog(Z)\log(Z)となる。Histogram sortは実際に超並列の科学アプリケーションで利用されている。例 ChaNGa

先行研究
(1)[https://ieeexplore.ieee.org/document/4134268]
(2)[https://ieeexplore.ieee.org/document/5470406]

Large scale parallel sorting algorithms

HykSortは直近で最も優れた実践的なアルゴリズム。 HykSortはsample sortとhypercube quick sortのハイブリッドになっている。しかし、HykSortがsplitterの決定に使っているsamplingとhistogrammingの手法はHSSとは異なっている。HykSortはHSSと比較してワーストケースで少なくともΩ(log(p)/log2log(p))\Omega(\log (p) / \log^2\log (p))倍のサンプルが必要になる。実際にこの論文では、HSSとHykSortのsamplingをHSSのアルゴリズムに置き換えたものを実装して、収束が速いことを確認している。

AMS-sortはoverpartitioningをsamplingに使っているアルゴリズム。 AMS-sortがsplitterの決定に使っているscanning algorithmはhistogrammingを1ラウンドしかしなかった場合のHSSより優れている。 しかしhistogrammingを複数回繰り返すと、HSSのほうがより効率的になる。AMS-sortのscanning algorithmはマルチラウンドに拡張しづらいものになっている。また、AMS-sortはlocally-balancedしか達成しないがHSSはglobally-balancedを達成できる。

Single stage AMS sort

AMS-sortの流れ

  1. サンプルを収集
  2. 1ラウンドのhistogrammingを実行
  3. ヒストグラムに基づいてlocally balancedなsplittingを行う

アルゴリズムは高確率でlocally balancedなsplitterを決定することができ、oversampling parameterはrandom samplingのsample sortより小さい。

後ほど示す通り、histogrammingのコストは同じ数のkeyをsamplingするコストと漸近的に等しいため、AMS-sortは理論的にsample sortよりも優れている。

Scanning algorithm

AMS-sortではヒストグラムを計算したあとにscanning techniqueを用いてsplitterを決定する。このアルゴリズムはヒストグラムをscanしていって、可能な限り最大のキーを順番にプロセッサーに割り当てていく。(実際にはヒストグラムのバケットを割り当てていく)これによって、各プロセッサーのロードがN(1+ϵ)/pN(1 + \epsilon)/pを超えないようにする。サンプルサイズが十分に大きければ、最初のp1p - 1個のプロセッサーの平均のロードは高い確率でN/pN/pより大きくなる。

locally balanced partitioningを達成するためにはサンプルサイズはΘ(p(logp+1/ϵ))\Theta(p(\log p + 1/\epsilon))必要になる。

table2

HISTOGRAM SORT WITH SAMPLING

HSSはsampling phaseとhistogramming phaseを交互に行う。これによって、sample sortに比べてサンプリングサイズを抑えることができる

HSS with one histogram round

最初に1ラウンドのhistogrammingを行うHSSについて考える。 この方式はAMS-sortよりも若干効率が悪くなっている。(Θ(min(logp,1/ϵ))\Theta(\min(\log p, 1 / \epsilon))倍になる) しかし、HSSは1ラウンドのhistogrammingをマルチラウンドに拡張することによって、globally balanced partitionを達成することができる。AMS-sortのscanning algorithmをマルチラウンドに拡張することは簡単ではない。 マルチラウンドのHSSはAMS-sortより効率的で、O(1)O(1)回のhistogrammingで漸近的な改善には十分となる。

HSSでは、各ターゲットレンジTi=[Ni/pNϵ/2p,Ni/p+Nϵ/2p]T_i = [Ni/p - N\epsilon/2p, Ni/p + N\epsilon/2p]に含まれるsplitterの候補を見つけることが目的となる。 各TiT_iについて、TiT_iにランクが含まれるキーが少なくとも1つサンプリングされれば、すべてのsplitterを決定することができる。直感的には、十分に大きなサンプルサイズであれば、このようなことが高確率で起こると考えられる。

Lemma 4.1
If every key is independently picked in the sample with probability, ps/N=(2plnp)/ϵNps/N = (2p\ln p)/\epsilon N, where s, the oversampling ration is choesn to be (2lnp)/ϵ(2\ln p)/\epsilon, then at least one key is chosen with rank in TiT_i for each ii, w.h.p..

証明の方針
TiT_iについて、1つもキーがサンプリングされない確率を上から抑える
(1ps/N)Ti1/p2(1 - ps/N)^{|T_i|} \leq 1/p^2
splitterはp1p - 1個あるので、キーがサンプリングされないTiT_iが存在する確率は
(p1)×p2<1/p(p - 1) \times p^{-2} < 1/p

Lemma 4.1からTheorem 4.2を導出できる。 このTheoremはマルチラウンドのHSSの解析にも利用できる。

Theorem 4.2
With one round of histogramming and sample size O(plog(p)/ϵ)O({p \log(p)} / \epsilon), HSS achives (1+ϵ)(1 + \epsilon ) load balance w.h.p..

HSS with multiple rounds

ここからはHSSはラウンドを複数にすることでより効率的になることを示す。

Sampling method

HSSのsampling phaseでは、サンプルを入力のサブセットγ\gammaから選択する。初期状態ではγ\gammaは入力全体となる。ラウンドが進むごとにγ\gammaは小さくなっていく。

HSSでのサンプリングでは、確率ps/Nps/Nγ\gammaの各キーが独立にサンプリングされる。(これによって解析が簡単になる。) ssはsampling ratioと呼ぶ。これまで出てきたoversampling ratioとは異なる概念のため注意。サンプルサイズの期待値は(psγ/N)(ps |\gamma|/N)となる。(oversampling ratioの場合は、バケットごとにサンプリングされる)

HSS with k histogramming rounds: Algorithm

アルゴリズムの流れ

  1. 1ラウンド目のsampling phaseでは、入力の全キーが確率ps1/Nps_1/Nでサンプリングされる。sis_iは初期のsampling ratio。サンプルはセントラルプロセッサーに集められ、その後probeとしてhistogramming phaseのために配布される
  2. 各プロセッサーはローカルヒストグラムを計算し、それを足し合わせグローバルのヒストグラムを計算する。
  3. 各splitter iiについて、セントラルプロセッサーはLj(i)L_j(i)Uj(i)U_j(i)を管理し、splitter intervalを各プロセッサーに配布する
  4. 各プロセッサーは新しいsplitter intervalを受け取ると、splitter intervalの中に存在するキーを確率psj+1/Nps_{j + 1}/Nでサンプリングする。sj+1s_{j + 1}はj + 1ラウンドのsampling ratio
  5. histogramming phaseが終了したら、サンプルの中から最もNi/pNi/pに近いキーをii番目のsplitterにする

figure1

HykSortのサンプリングとHSSのサンプリングの違いは、HykSortはすべてのsplitter intervalから均等にサンプルするのに対して、HSSはintervalの長さに比例してサンプリングすること。これによって、HSSはintervalの縮小が速い。

アルゴリズムの進展によってsplitter intervalは縮小していくので、サンプリングの対象は毎回小さくなっていく。 γj\gamma_jjjラウンド後にいずれかのsplitter intervalに含まれるキーの集合とする。すると以下のようにサイズを上から抑えることができる

γjΣiUj(i)Lj(i)|\gamma_j| \leq \Sigma_i U_j(i) - L_j(i)

不等式なのは重複があるから。 しかし、splitter intervalの選び方から、部分的な重複はなく、重複がないか一致しているかのどちらかしかない。

HSSの性能の証明の流れ

  1. 最後のラウンドでsampling ratioが十分に大きければ良いsplittingを達成することの証明
  2. 各ラウンドのサンプルサイズをsampling ratioの式で上から抑える
  3. サンプルサイズが定数分の1に減少していくようにsampling ratioを設定する

Lemma 4.3
if sk=2lnpϵs_k = \frac{2\ln p}{\epsilon} be the sampling ratio for the kthk^{th} round, then at least one key is chosen from each TiT_i after kk rounds w.h.p..

これが証明の流れの1にあたる補題
これはLemma 4.1をsj=2plnpϵs_j = \frac{2p \ln p}{\epsilon}として適用すれば即座に求まる。

Lemma 4.4
Let sjs_j be the sampling ratio for the jthj^{th} round, Ij(i)I_j(i) be the splitter interval for the ithi^{th} splitter after jj rounds and γj\gamma_j denote the set of input keys that lie in one of the IjI_j's, then E(γj)2NsjE(|\gamma_j|) \le \frac{2N}{s_j}.

証明の流れの2のための準備1
この補題は、Lj(i)L_j(i)Uj(i)U_j(i)が毎ラウンド改善されていくことを利用して、E[Uj(i)Nip]E[U_j(i) - \frac{Ni}{p}]E[Lj(i)Nip]E[L_j(i) - \frac{Ni}{p}]を上から抑えることで証明される。Uj(i)NipU_j(i) - \frac{Ni}{p}は、jjラウンド目のsplitter intervalの上半分。上半分と下半分を上から抑えることで全体のサイズを上から抑える。

Lemma4.5
If sj<2plnps_j < \sqrt{\frac{2p}{\ln p}}, then γj4Nsj|\gamma_j| \leq \frac{4N}{s_j} w.h.p..

証明の流れの2のための準備2
Lemma 4.4では期待値だったが、この補題で高確率でγj\gamma_jのサイズが小さいことを示す。
この補題の証明では、新しくUj(i)U_j'(i)Lj(i)L_j'(i)を定義する。

Uj(i)=min(N(i+1)p,Uj(i)),Lj(i)=max(N(i1)p,Lj(i))U_j'(i) = \min (\frac{N(i + 1)}{p}, U_j(i)), L_j'(i) = \max (\frac{N(i - 1)}{p}, L_j(i))

これによって、2つのsplitter intervalで重複していた部分を分割し、個別に扱えるようにする。(γj|\gamma_j|は変わらないことに注意)
これを使って

P[ΣiUj(i)Nip>2Nsj]1p2P[\Sigma_i U_j'(i) - \frac{Ni}{p} > \frac{2N}{s_j}] \leq \frac{1}{p^2}

を示す。(LjL_j'側も同じ手順で示す)
よって

γjΣi(Uj(i)Nip)+(NipLj(i))4Nsj|\gamma_j| \leq \Sigma_i (U_j'(i) - \frac{Ni}{p}) + (\frac{Ni}{p} - L_j'(i)) \leq \frac{4N}{s_j} w.h.p.

が証明できる。

Lemma 4.6
Let ZjZ_j be the sample size for the jthj^{th} round and sjsj1s_j \ge s_{j - 1}, then Zj(5psj/sj1)Z_j \leq (5ps_j/s_{j - 1}) w.h.p..

証明の流れの2にあたる補題
この証明によって、各ラウンドのサンプルサイズを上から抑え、またsampling ratioの比にしたがってサンプルサイズが減少していくことを示せる。
この補題の証明は以下の事実とチェルノフバウンドを利用する。

必要な補題は揃ったので、ここからはアルゴリズムが所望のload balancingを達成して停止させるために、どのようにsampling ratioを設定すればよいかを考える。

kkラウンドのHSSで、jthj^{th}ラウンドのsampling ratioを以下のように設定する。

sj=(2lnp/ϵ)j/ks_j = (2 \ln p/\epsilon)^{j/k}

すると、Lemma 4.3より、kkラウンド目で全splitterは高確率で求まる。

Lemma 4.3
if sk=2lnpϵs_k = \frac{2\ln p}{\epsilon} be the sampling ratio for the kthk^{th} round, then at least one key is chosen from each TiT_i after k rounds w.h.p..

Lemma 4.5より、γj|\gamma_j|は、4N(ϵ/2lnp)1/k4N(\epsilon/2 \ln p)^{1/k}より小さい。

Lemma4.5
If sj<2plnps_j < \sqrt{\frac{2p}{\ln p}}, then γj4Nsj|\gamma_j| \leq \frac{4N}{s_j} w.h.p..

さらに、Lemma 4.6より、jthj^{th}ラウンドでのサンプルサイズは高々5p(2lnp/ϵ)1/k5p(2 \ln p/\epsilon)^{1/k}

Lemma 4.6
Let ZjZ_j be the sample size for the jthj^{th} round and sjsj1s_j \ge s_{j - 1}, then Zj(5psj/sj1)Z_j \leq (5ps_j/s_{j - 1}) w.h.p..

よってTheorem 4.7が成り立つ

Theorem 4.7
With kk rounds of histogramming and a sample size of O(plogpϵk)O(p\sqrt[k]{\frac{\log p}{\epsilon}}) per round, HSS achives (1+ϵ)(1 + \epsilon) load balance w.h.p.. for large enough pp.

Theorem 4.7より、サンプルサイズとラウンド数にはトレードオフがあることがわかる。全ラウンドを通してのサンプルサイズを最小化するには、kplogp/ϵkkp\sqrt[k]{\log p/\epsilon}kkに関して微分し、0をセットする。

d(kplogp/ϵk)dk=0k=loglogpϵ\frac{d(kp\sqrt[k]{\log p/\epsilon})}{dk} = 0\\ \Rightarrow k = \log \frac{\log p}{\epsilon}

これによって、Theorem 4.8が成り立つ

Theorem 4.8
With k=O(log(logp/ϵ))k = O(\log(\log p / \epsilon)) rounds of histogramming and O(p)O(p) samples per round (O(1)O(1) from each processor), HSS achives (1+ϵ)(1 + \epsilon) load balance w.h.p.. for large enough p.

ϵ=p/N\epsilon = p/Nにするとexact splittingを得られる。

Threorem 4.9
HSS with O(p)O(p) samples per round overall cant achive exact splliting in O(logN/p+loglogp)O(\log N/p + \log\log p) rounds.

RUNNING TIMES

この論文では、並列計算のモデルにBSPを利用する。 BSPのアルゴリズムはsuperstepで構成される。 1つのsuperstepの中で、各プロセッサーは自身が持つデータを使ってローカルに計算を行い、データを送受信することができる。 superstepは同期のタイミングとなっている。

BSPのアルゴリズムの複雑性は以下の3つの要素から成り立っている

  1. superstepの数 (同期コスト)
  2. 1つのsuperstepの中で行われる最大の計算量を全superstepについて合計したもの (計算コスト)
  3. 1つのsuperstepの中で送受信される最大のデータ量を全superstepについて合計したもの (コミュニケーションコスト)

この研究では、プロセッサーは各superstepにおいてpp個のメッセージを送受信できるとする。 このモデル上で、Histogramming roundが増えるとsuperstep数は増えるが、コミュニケーションコストは低くなることを示す。

実行時間の解析では、sample sortとHSSを比較する。 この2つのアルゴリズムでは以下のコストは共通している。

データ交換後のマージのコストはO((N/p)logp)O((N/p) \log p)

Cost of Sampling

サイズSSのサンプルを1つのプロセッサーに集めるとすると、O(S)O(S)のコミュニケーションコストのsuperstepが必要になる。 送信前に各プロセッサーでサンプルがソートされていれば、マージステップの計算量はO(Slogp)O(S \log p)になる。

Cost of Histogramming

ローカルヒストグラムの計算量

グローバルヒストグラムはO(S)O(S)のコミュニケーションコストと計算量を持つ2回のsuperstepで計算できる

probeがヒストグラムの作成のためにブロードキャストされる。長さがSSのメッセージの送信のコミュニケーションコストはO(S)O(S)。 よって、サンプリングフェーズのコミュニケーションコストと計算コストはともにサンプルサイズに比例する。

table2

ベストな設定のHSSは他のアルゴリズムよりも複雑度の面で勝っている。

メモ
この論文はSPAA 2023のこの論文の前提となっている論文
2023の論文では解析をよりタイトにし、かつ、このアプローチのサンプルサイズとラウンド複雑性が最適であることを証明した。