Hypercube(통신 패턴)
Hypercube (communication pattern)d-dimension 하이퍼큐브는 의 d\ 2개의 처리 요소를 병렬 컴퓨터의 네트워크 토폴로지입니다.토폴로지를 사용하면 브로드캐스트, All-Reduce, Prefix [1]sum 등의 기본적인 통신 프리미티브를 효율적으로 구현할 수 있습니다.처리요소는 00)~d -(\ 2의 번호가 매겨집니다.각 처리요소는 1비트만 다른 처리요소에 인접해 있습니다.이 페이지에서 설명하는 알고리즘은 이 구조를 효율적으로 활용합니다.
알고리즘의 개요
이 문서에서 설명하는 대부분의 통신 프리미티브는 공통 [2]템플릿을 공유합니다.처음에 각 처리 요소는 알고리즘 처리 중에 다른 모든 처리 요소에 도달해야 하는 하나의 메시지를 소유합니다.다음의 의사 코드는, 필요한 통신 스텝의 개요를 나타내고 있습니다.따라서 Initialization, Operation 및 Output은 주어진 통신 프리미티브에 따라 달라지는 플레이스 홀더입니다(다음 섹션 참조).
입력: m m 출력: 초기화, 작동 및 출력에 따라 달라집니다.Initialization s:0≤ k<>에=m{\displaystyle s:=m}, d{\displaystyle 0\leq k<, d}y니:=나는 XOR2k{\displaystyle는 y:=i{\text{XOR}}2^{k}}의 y에{이\displaystyle}{m\displaystyle}y{이\displaystyle}에(s, m){\displaystyl m를 받다{s\displaystyle}를 보낸다.e(s, 출력 종료
각 처리 요소는 네이버 상에서 반복됩니다(식 2 {\ i} {\{ }}는 i{\ i의 바이너리 에서 비트를 부정하므로 네이버의 번호를 얻을 수 있습니다).각 처리요소는 반복할 때마다 네이버와 메시지를 교환하고 수신한 메시지를 처리한다.처리 작업은 통신 프리미티브에 따라 달라집니다.
커뮤니케이션 프리미티브
프리픽스 합계
프리픽스 합계 연산 시작 시 각 처리 요소 는메시지 를 소유합니다.는0 j j { \ i } { } 입니다여기서 \ 는 연관입니다.다음 의사 코드는 알고리즘을 설명합니다.
입력: { {i} 。출력: prefix sum 0 i \ \_ { \ j \ i} _ {j } i m : x : m : m : { x : m : { : { displaystyle x :{ m } } m : { displaystyle } - 0 k y k y2y y 으로 m m style display style = display style = dispon:\ style {\ i에서 x : { x :x \ mend for
알고리즘은 다음과 같이 동작합니다.는 d-의 하이퍼큐브 2개로 분할할 수 있습니다선행 의노드를 포함하는 서브큐브와 선행 1의 노드를 포함하는 서브큐브를 참조해 주십시오.두 서브큐브가 프리픽스 합계를 계산한 후에는 0 서브큐브의 모든 요소에 대한 합계를 1 서브큐브의 모든 요소에 추가해야 합니다. 0 서브큐브의 모든 처리 요소는 1 서브큐브의 처리 요소보다 순위가 낮기 때문입니다.의사 코드는 변수(\x에 프레픽스 합계를, 변수(\ \sigma에 모든 노드의 합계를 저장합니다.이를 통해 1-sub 큐브 내의 모든 노드가 모든 단계에서 0-sub 큐브에서 합계를 수신할 수 있습니다.
그 결과 T의 경우 로그p {\의 경우 로그 p {\의 로그 p( , )의 로그 p( start T )의 값이 됩니다 p
총집합/총감
전체 수집 작업은 메시지 를 가진 각 처리 요소에서 시작됩니다.이 조작의 목적은 각 처리 요소가 다른 모든 처리 요소의 메시지를 하는 것입니다. , x := m … { x : _ { 0 } \ _ { 1 } \ _ { p 。여기서 { style \ }는 연결입니다.이 조작은 알고리즘템플릿에 따라 구현할 수 있습니다.
처리 장치에 입력:메시지 x:)나는}{\displaystyle x:=m_{나는}m나는{\displaystyle 나는}. 출력:모든 메시지 인류 1⋅ m2. 깨지mp{\displaystyle m_{1}\cdot m_{2}\dots m_{p}}. x:)나는}0≤ k<>;d{\displaystyle 0\leq k<, d}y니{\displaystyle x:=m_{나는}m:=나는 XOR2k{\displ.aystylXORk}x)를y(\y로 전송 y y :=)x x:= x end for 반복할 때마다 전송되는 메시지의 길이는 2배가 됩니다.이로 인해 은 T ,p d - ( start + )= ( )T (p - ) Tbyte ( \ ( , p ) \ _ j ^{ d - 1 ( _ - 1 )
All-Reduce 조작에도 같은 원리를 적용할 수 있지만 메시지를 연결하는 대신 2개의 메시지에 대해 감소 조작을 수행합니다.즉, 모든 처리 유닛이 결과를 아는 Reduced 연산입니다.브로드캐스트에 이은 통상적인 축소 조작에 비해 하이퍼 큐브의 All-Reduce는 통신 스텝의 수를 줄입니다.
올투올
여기서 모든 처리 요소는 다른 모든 처리 요소에 대해 고유한 메시지를 가집니다.
입력:메시지 m나는}. d을에 나는 요소 j{j\displaystyle}을 처리하기{\displaystyle 나는}처리 요소에서 k ≥ 0{\displaystyle d>, k\geq 0}나는 XOR2k{\displaystyle 나는{\text{XOR}}2^{k}}:내 k을 위해 메시지 전체를{\di 처리 요소에서 받으세요니{\displaystyle m_{ij}j.splays k -dimensional 서브큐브 처리 {\ i{}} : k{ k -dimensional 서브큐브 엔드 포트의 메시지 메시지가 아직 도착하지 않은 경우 반복할 때마다 수신처에 한 차원 더 가까워집니다.따라서 모든 메시지는 log \ d {p 단계를 거친 후 목표에 도달합니다. 단계에서 p p 메시지가 전송됩니다.첫 번째 반복에서는 메시지의 절반이 자신의 서브 큐브에 대한 것이 아닙니다.다음 모든 단계에서 서브큐브는 이전과 같은 크기의 절반에 불과하지만 이전 단계에서 다른 처리 요소에서 도착한 메시지 수와 정확히 동일합니다.
그 결과 실행시간은 ( , ) logp ( + T T ( , )\ about \{} ( T { \ { } + { \ { } { 2} n 입니다.
ESBT 브로드캐스트
ESBT 브로드캐스트(Edge-Disconnect Spanning 이항 트리) 알고리즘은[3] 하이퍼큐브 네트워크토폴로지를 가진 클러스터에 최적의 런타임의 파이프라인 브로드캐스트알고리즘입니다이 알고리즘은 처리 의 각 인접 라우터가의 d -(\2 에서 스패닝 이항 트리의 루트가 되도록 하이퍼 큐브에 분리 이항 트리를 포함합니다.메시지를 브로드캐스트하기 위해 소스 노드는 메시지를 동일한 크기의 kk 청크로 하여 이항 트리의 루트로 주기적으로 전송합니다.청크를 수신하면 이항 트리는 청크를 브로드캐스트합니다.
런타임
각 단계에서 소스 노드는 k 청크 중 하나를 이항 트리로 전송합니다.이항 트리 내의 청크를 브로드캐스트하려면 dd 단계를 합니다.따라서 모든 청크를 배포하려면k\displaystylek 스텝이 하며 트리 브로드캐스트가 완료될 때까지 로 dd 스텝이 필요합니다.그 결과 전체적으로k + \ k +가 .따라서 길이({n}) 메시지의 실행시간은 k) ( k + ) ( ) { T () = \입니다.최적의 k 를합니다.{ k^ { * } =T_ { \ text { byte} } { 알고리즘의 최적 런타임은 ( , ) ⋅ + log ) + ( p) T { T^ { * } ( , p ) \ { log 。
이항 트리의 구성
이 섹션에서는 이항 트리를 체계적으로 구성하는 방법에 대해 설명합니다.먼저 다음과 같이 단일 이항 스패닝트리 2 {\ 2 노드를 구축합니다.0}) ~})의 노드에 번호를 매기고 바이너리 표현을 고려합니다.그런 다음 각 노드의 하위 항목을 단일 선행 0을 부정하여 얻습니다.그 결과 단일 이항 스패닝트리가 생성됩니다.트리의가장자리 분리 복사본을 노드를 변환 및 회전합니다. 트리의 복사본인 경우 각 노드에 2의 XOR 연산을 적용합니다.그런 다음 모든 노드를k자리(\ k씩 회전시킵니다.결과적으로 생성되는 이항 트리는 에지 분리되므로 ESBT 브로드캐스트알고리즘 요건을 충족합니다.
레퍼런스
- ^ Grama, A. (2003)병렬 컴퓨팅의 개요.애디슨 웨슬리; 오플라주: 2ed. ISBN978-0201648652.
- ^ 포스터, I. (1995년)병렬 프로그램 설계 및 구축:병렬 소프트웨어 엔지니어링 개념 및 도구.애디슨 웨슬리, ISBN 0201575949
- ^ Johnsson, S.L.; Ho, C.-T. (1989). "Optimum broadcasting and personalized communication in hypercubes". IEEE Transactions on Computers. 38 (9): 1249–1268. doi:10.1109/12.29465. ISSN 0018-9340.