Shuffle-exchange network 的 bisection width

2020年3月26日更新:添加了嚴謹一些的證明的鏈接,補充了一些說明

shuffle-exchange network是一種interconnection network,可用於並行計算中multiple processors的組織。

它的diameter比較容易看出來是 2log(n)-1,但是bisection width可能不那麼直觀,這裏提供一個我個人的(錯誤的)思路:

先把switches分成數量相等的兩個集合,組成兩個子網絡,最容易想到的分割方法就是按最高有效位是0還是1劃分,按照Figure 2.9就是把上下兩行switches分開。無向邊只出現在最低位相同的兩個節點間,不用考慮;自環只在全0和全1的節點出現,也不用考慮;只考慮左循環移位導致的有向邊。

顯然,這些有向邊構成了一個個環,一個環在兩個子網絡間產生一個出度一個入度(這裏有問題,因爲可能產生多個出度和入度),所以一個環增加1的bisection width,環的個數等於節點二進制編碼的pattern個數,一個pattern對應一組循環移位。pattern的個數很難計算,所以我們這樣來考慮,一共由n個節點,也就是由n個二進制編碼,一個pattern對應的編碼個數位大約是log(n)(有些pattern會比log(n)少),所以pattern的個數 \approx n/log(n),也就是bisection width \approx n/log(n)


事實上,如果要按圖中的上下進行劃分,上面的節點都是0xxx…,下面的都是1xxx…,那麼兩個子網絡之間的邊只有01xxx…和10xxx…的邊產生(每個這樣的節點產生一個有向邊),bisection width就變成O(n)的了。

然而wiki裏bisection width的定義中有這麼一句“Bisection should be done in such a way that the bandwidth between two partitions is minimum.”,所以這樣劃分是不行的。


這裏有一個嚴謹一些的證明(最後一節),用到了複平面,大概的證明思路是:

  1. 把所有的節點表示成複平面的點(節點的二進制編碼->一組d次單位根的加和,N=2^d,N是節點個數)
  2. exchange edge將節點連成了一個個necklace,有full的(d個節點),有degenerate的(O(n/log(n))個)
  3. 實軸上的點有O(n/log(n))
  4. 碰到實軸的邊有O(n/log(n))
  5. 實軸上下點的個數一樣,實軸上的點的任意對半分,形成兩個元素個數相等的集合

需要注意的是這個證明只證明了bisection width的上界,沒有證明下界

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章