감액연산자
Reduction operator컴퓨터[1] 과학에서 환원 연산자는 병렬 프로그래밍에서 배열의 요소를 단일 결과로 줄이기 위해 일반적으로 사용되는 연산자의 한 유형입니다.환원 연산자는 연관성이 있고 종종(꼭 가환적일 필요는 없지만)[2][3][4] 가환적입니다.요소 집합의 축소는 Map Reduce와 같은 프로그래밍 모델의 필수적인 부분으로, 축소 연산자가 축소되기 전에 모든 요소에 적용(매핑)됩니다.다른 병렬 알고리즘에서는 보다 복잡한 문제를 해결하기 위해 감소 연산자를 주 연산으로 사용합니다.브로드캐스트에 많은 리덕션 연산자를 사용하여 모든 프로세서에 데이터를 배포할 수 있습니다.
이론.
축소 연산자는 최종 결과를 얻기 위해 사용할 수 있는 부분 결과를 계산함으로써 태스크를 다양한 부분 태스크로 분해하는 데 도움을 줄 수 있다.이를 통해 특정 직렬 작업을 병렬로 수행하고 해당 작업에 필요한 단계 수를 줄일 수 있습니다.축소 연산자는 부분 태스크의 결과를 변수의 개인 복사본에 저장한다.그런 다음 이러한 개인 복사본은 마지막에 공유 복사본으로 병합됩니다.
연산자는 다음과 같은 경우 감소 연산자입니다.
이러한 두 가지 요구 사항은 모든 배열 요소에 적용되는 교환 연산자 및 연관 연산자에 대해 충족됩니다.
이러한 요건을 충족하는 연산자에는 덧셈, 곱셈 및 논리 연산자(및 기타)가 있습니다.
감소 연산자 { }는 V { ( - 1 ),v ( - 1 m - ) ,, - 1 ( p - 1 -0 - 1 - 1 ) = ( e p - 0 ) - 1 - 1 m - 1 ) 에 일정 시간 동안 적용할 수 있습니다. { \ { \ v}.\\pmatrix,}{p}{patrix}{p}{patrix}{patrix}{p}{p}{paramatrix}{p}{p}{p}{p}{p}{p}{p}연산 r {\ r은 요소 ( ⊕ e 0 e0 e 0m - 1 - ) (( p- - - 1 ) (⨁ i - )}^{}\oplus}\pm-1}\matrix}pm-1}pmatrix}\}pm-1}pmatrix\}pm={pm-1}pmatrix}\}pm-1}에서 지정합니다.계산 완료 후 모든 프로세서에서 rr을 사용할 수 있어야 하는 보통 Allreduce라고 합니다.최적 축소를 위한 순차 선형 시간 알고리즘은 연산자를 앞에서 뒤로 연속적으로 적용할 수 있으며, 항상 두 벡터를 모든 요소에 적용된 연산 결과로 대체하여 하나의 벡터가 적은 인스턴스를 만듭니다.rr만 때까지 (-)m \ \ muntil until until until until until until until ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (순차 알고리즘은 선형 시간보다 더 나은 성능을 발휘할 수 없지만 병렬 알고리즘은 최적화할 수 있는 공간을 남겨둡니다.
예
어레이[,,1,, , 4 3, 5,, 7, 6,, 4 displaystyle 이 있다고 가정합니다.이 어레이의 합계는 '+' 연산자를 사용하여 순차적으로 단일 합계로 계산됩니다.어레이의 선두로부터 합계를 개시하면, 다음과 같은 결과가 됩니다.
'+'는 가환 연산자이면서 연관 연산자이기 때문에 축소 연산자입니다.따라서 이 리덕션은 여러 코어를 사용하여 병렬로 실행할 수 있습니다.여기서 각 코어는 어레이의 서브셋의 합계를 계산하고 리덕션 연산자는 결과를 Marge합니다.바이너리 트리 리덕션을 사용하면 4개의 코어가( (+(+ (+ 4 ), (8 + 4 ), (2 + 3), (5 + 1 ), (5 + 1 (7 ( + 를 계산할 수 .다음으로 2개의 코어가 + 5+ 및 ( +를 계산할 수 있습니다.마지막으로 단일 코어가( + )=입니다.따라서 총 4개의 코어를 하여 로그 2 3 style \3 \\log } 의 합계를 계산할 수 있습니다. 버전에는 7 단계가 필요합니다. 병렬 바이너리 트리 기술은( ( +) +( +1 ) +( + )+ ( + ){ style ( } , ( + 3 + ( + ) } + { \ ( } , ( + 6 ) + ( + 4 )} + { \ big} + { \ big} 를 계산합니다.물론 결과는 동일합니다.여러 프로세서에 작업을 분배하는 마스터 코어가 있는 경우 결과물이 어떤 순서로 마스터 프로세서에 반환될 수 있으므로 리덕션 오퍼레이터의 정류성이 중요합니다.교환성의 속성은 결과가 동일함을 보증합니다.
샘플 없음
행렬 곱셈은 가환 연산이 아니므로 축소 연산자가 아닙니다.프로세스가 임의의 순서로 행렬 곱셈 결과를 마스터 프로세스로 반환할 수 있는 경우 결과가 잘못된 경우 마스터가 계산한 최종 결과는 올바르지 않을 수 있습니다.단, 행렬 곱셈은 연관성이 있으므로 이진 트리 감소 기술과 같이 올바른 순서가 적용되면 결과는 정확합니다.
알고리즘
이항 트리 알고리즘
병렬 알고리즘에 관해서는 처리장치 간의 공유 메모리를 가진 RAM의 확장으로서의 병렬 랜덤 액세스 머신과 통신 및 동기화를 고려한 벌크 동기 병렬 컴퓨터의 두 가지 주요 모델이 있다.두 모델 모두 시간 복잡성에 대해 서로 다른 영향을 미치므로 두 가지 알고리즘이 표시됩니다.
PRAM 알고리즘
이 알고리즘은 pp가 2의 거듭제곱인 입력을 하는 광범위한 방법을 나타냅니다.브로드캐스트 [5][6][7]요소에는 종종 역순서가 사용됩니다.
- 위해서 로. 하다
- 위해서 로. 병행하여 하다
- 한다면 그럼 액티브하게 됩니다.
- 조금 있으면 의 그럼 설정됩니다.
- 세트 활동하지 않다
- 그렇지 않으면
- 조금 있으면 의 그럼 설정됩니다.
- 한다면 그럼 액티브하게 됩니다.
- 위해서 로. 병행하여 하다
벡터의 바이너리 연산자는 요소별로 정의됩니다 0 i - )⊕( 0 - ( 0 j 0 ) e m - e - ) { pmatrix } e { }^\ vots - 1 } { i } { i } } } m \ } ^{i { i } { i } } } } m m m m m m 。vdots\{}^{}\o}{{\0}{{{{\o}}}{{{mplus}}}}}}{{{{{{\o또한 알고리즘은 모든 i p(\ p에 대해 (\}=i})의 를 2의 거듭제곱으로 가정하고 }, 을 사용합니다.단위가 비활성화되어 추가 계산에 기여하지 않습니다.그림에서는 연산자로 덧셈을 사용한 알고리즘의 시각화를 보여 줍니다.수직선은 해당 라인에 있는 요소의 계산이 이루어지는 처리 단위를 나타냅니다.8개의 입력 요소는 하단에 있으며 각 애니메이션 스텝은 알고리즘 실행 시 하나의 병렬 스텝에 해당합니다.- 그렇죠 - 기초 x_{i)에 표시된 연산자를 평가하며, 표시식 x{i(J)를 표시합니다. p_{j}}이(가) 현재 단계에서 비활성 프로세서가 됩니다 i}) j(\는 입력 X(\x_{j})의 요소는 아닙니다.필드는 덮어쓰기되어 이전에 평가된 식에 재사용됩니다.각 단계에서 추가적인 통신을 유발하지 않고 각 처리 장치의 역할을 조정하기 위해 0 0부터p -(\까지의 수치로 처리 장치를 색인화하는 것을 사용한다.각 프로세서는 k)의 최하위 비트를 보고(\ k의 비트가 설정되어 있지 않은 인덱스를 가진 요소에 대해 비활성화 여부를 결정합니다.알고리즘의 기본 통신 패턴은 이항 트리이므로 알고리즘의 이름이 됩니다.
p 만이 마지막에 결과를 보유하기 때문에 루트 프로세서입니다.Allreduce 연산의 경우 결과를 배포해야 합니다.은 p0 {\ style 에서 브로드캐스트를 추가하는 것으로 실행할 수 있습니다. 프로세서 수는2의 거듭제곱으로 제한됩니다.이것은 프로세서의 수를 2의 다음 거듭제곱으로 채우는 것으로 해결할 수 있습니다.또한 이 사용 사례에 [8]더 적합한 알고리즘도 있습니다.
런타임 분석
메인 루프가 2 p p { displaystyle \ _회 실행되며, 병렬처리된 부품에 필요한 시간은 O() \ \ ( )로 2개의 벡터가 결합되거나 비활성화됩니다.따라서 PRAM의 T {{ T는 ) O )( 、 { Tm m 입니다.읽기 및 쓰기 충돌 처리 전략은 배타적 읽기 및 독점 쓰기(EREW)와 같이 제한적으로 선택할 수 있습니다.알고리즘의 (, m ){ (p, ) ( e T( ,m ) O ( log(p ) \ ( , m ) \ { { O \( \ ) 。( ( , ) ( log ( )\ E , ) \ \ { } \ left ( { \ { , m ) } { } \ ) ={ } \ ( { \ { S ( p , mathcal { mathcal { m} { { p } } } \ } \ light } \ light} }} \ )각 스텝 후에 액티브한 처리 유닛의 절반이 비활성화되기 때문에 효율이 저하됩니다. i (\ { 유닛은 i (\i에서 액티브하게 됩니다.
분산 메모리 알고리즘
PRAM 알고리즘과는 달리 분산 메모리 모델에서는 메모리가 처리 장치 간에 공유되지 않고 처리 장치 간에 데이터를 명시적으로 교환해야 한다.따라서 다음 알고리즘에서 볼 수 있듯이 데이터를 장치 간에 명시적으로 교환해야 합니다.
- 위해서 로. 하다
- 위해서 로. 병행하여 하다
- 한다면 그럼 액티브하게 됩니다.
- 조금 있으면 의 그럼 설정됩니다.
- 보내세요 로.
- 세트 활동하지 않다
- 그렇지 않으면
- 받다
- 조금 있으면 의 그럼 설정됩니다.
- 한다면 그럼 액티브하게 됩니다.
- 위해서 로. 병행하여 하다
분산 알고리즘과 PRAM 버전의 유일한 차이점은 명시적 통신 프리미티브를 포함한다는 것입니다. 작동 원리는 동일합니다.
런타임 분석
유닛간의 통신은 약간의 오버헤드로 이어집니다.알고리즘의 간단한 분석에서는 모델을 사용하여 을 개시하는 데 필요한 (\ 과 바이트를 송신하는 데 한 (\byte이 포함되어 있습니다.그 후 실행시간은( ( + T g () \ \( ( ( _ { ) + \ { byte ) \ log ( )、 \ ) 。
파이프라인 알고리즘
분산 메모리 모델의 경우 파이프라인 통신을 사용하는 것이 좋습니다. T b e \ {byte}에 T \ style T_ { start} 이 작은 입니다.보통 선형 파이프라인은 데이터나 태스크를 작게 분할하여 단계적으로 처리합니다.이항 트리 알고리즘과 달리 파이프라인 알고리즘은 벡터가 분리할 수 없지만 단일 요소에 대해 [9]연산자를 평가할 수 있다는 사실을 사용합니다.
- 위해서 로. 하다
- 위해서 로. 병행하여 하다
- 한다면
- 보내세요 로.
- 한다면
- 받다 부터
- 한다면
- 위해서 로. 병행하여 하다
알고리즘이 동작하려면 , 송신 조작과 수신 조작을 동시에 실행할 필요가 있습니다.결과 벡터는 마지막에 - 1에 됩니다.연관된 애니메이션은 크기가 4인 벡터 및 5개의 처리 장치에서의 알고리즘 실행을 보여줍니다.애니메이션의 두 단계는 하나의 병렬 실행 단계를 시각화합니다.
런타임 분석
병렬 실행 단계 수는 p+ - p입니다. 마지막 처리 장치가 첫 번째 요소를 수신할 때까지p -({ 단계를 모든 요소를 수신할 때까지 m-({ 를 거칩니다.따라서 BSP 모델의 은 T( , , ) ( s + m T y )( p+ - 2)( T ( , , m ) = \ ({ } + { \ { } {} \ _ 。
m{\ m은 이지만 벡터의 요소를 논리적으로 그룹화하여m {\ m을 줄일 수 있습니다. 예를 들어, 크기가 4인 벡터는 항상 함께 전송되고 계산되는 첫 번째 두 개의 요소와 마지막 두 개의 요소로 나누어 처리할 수 있습니다.이 경우, 각 스텝의 볼륨은 2배로 송신되지만, 스텝의 수는 약 반감하고 있습니다., 파라미터 m m은 절반으로 줄었지만 총 바이트 n n은 그대로입니다. 접근법의 런타임 T T는 mm의 값에 의존합니다.이 값은 {\ b t \가 알려진 최적화할 수 있습니다. 값은 n ( - ) T y s t { m { \ (p - 2 )\ { } { 이렇게 하면 원래 m을 분할하는 m m이 작아진다고 가정합니다.
적용들
감소는 메시지 전달 인터페이스에서 구현되는 주요 집합 작업 중 하나로, 사용된 알고리즘의 성능이 중요하며 다양한 사용 [10]사례에 대해 지속적으로 평가됩니다.연산자를 다음에 대한 매개 변수로 사용할 수 있습니다.MPI_Reduce
그리고.MPI_Allreduce
1개의 (루트) 처리 유닛 또는 모든 처리 유닛에서 결과를 사용할 수 있는 차이입니다.MapReduce는 [11][12]대용량 클러스터에서도 빅데이터 세트를 처리하기 위해 효율적인 절감 알고리즘에 크게 의존하고 있습니다.
일부 병렬 정렬 알고리즘은 매우 큰 데이터 [13]세트를 처리하기 위해 축소를 사용합니다.
「 」를 참조해 주세요.
레퍼런스
- ^ "Reduction Clause". www.dartmouth.edu. Dartmouth College. 23 March 2009. Retrieved 26 September 2016.
- ^ a b c 솔린
- ^ 찬드라 페이지 59
- ^ Cole, Murray (2004). "Bringing skeletons out of the closet: a pragmatic manifesto for skeletal parallel programming" (PDF). Parallel Computing. 30 (3): 393. doi:10.1016/j.parco.2003.12.002. hdl:20.500.11820/8eb79d42-de83-4cfb-9faa-30d9ac3b3839.
- ^ Bar-Noy, Amotz; Kipnis, Shlomo (1994). "Broadcasting multiple messages in simultaneous send/receive systems". Discrete Applied Mathematics. 55 (2): 95–105. doi:10.1016/0166-218x(94)90001-9.
- ^ Santos, Eunice E. (2002). "Optimal and Efficient Algorithms for Summing and Prefix Summing on Parallel Machines". Journal of Parallel and Distributed Computing. 62 (4): 517–543. doi:10.1006/jpdc.2000.1698.
- ^ Slater, P.; Cockayne, E.; Hedetniemi, S. (1981-11-01). "Information Dissemination in Trees". SIAM Journal on Computing. 10 (4): 692–701. doi:10.1137/0210052. ISSN 0097-5397.
- ^ Rabenseifner, Rolf; Träff, Jesper Larsson (2004-09-19). More Efficient Reduction Algorithms for Non-Power-of-Two Number of Processors in Message-Passing Parallel Systems. Recent Advances in Parallel Virtual Machine and Message Passing Interface. Lecture Notes in Computer Science. Vol. 3241. Springer, Berlin, Heidelberg. pp. 36–46. doi:10.1007/978-3-540-30218-6_13. ISBN 9783540231639.
- ^ Bar-Noy, A.; Kipnis, S. (1994-09-01). "Designing broadcasting algorithms in the postal model for message-passing systems". Mathematical Systems Theory. 27 (5): 431–452. CiteSeerX 10.1.1.54.2543. doi:10.1007/BF01184933. ISSN 0025-5661. S2CID 42798826.
- ^ Pješivac-Grbović, Jelena; Angskun, Thara; Bosilca, George; Fagg, Graham E.; Gabriel, Edgar; Dongarra, Jack J. (2007-06-01). "Performance analysis of MPI collective operations". Cluster Computing. 10 (2): 127–143. doi:10.1007/s10586-007-0012-0. ISSN 1386-7857. S2CID 2142998.
- ^ Lämmel, Ralf (2008). "Google's MapReduce programming model — Revisited". Science of Computer Programming. 70 (1): 1–30. doi:10.1016/j.scico.2007.07.001.
- ^ Senger, Hermes; Gil-Costa, Veronica; Arantes, Luciana; Marcondes, Cesar A. C.; Marín, Mauricio; Sato, Liria M.; da Silva, Fabrício A.B. (2016-06-10). "BSP cost and scalability analysis for MapReduce operations". Concurrency and Computation: Practice and Experience. 28 (8): 2503–2527. doi:10.1002/cpe.3628. hdl:10533/147670. ISSN 1532-0634. S2CID 33645927.
- ^ Axtmann, Michael; Bingmann, Timo; Sanders, Peter; Schulz, Christian (2014-10-24). "Practical Massively Parallel Sorting". arXiv:1410.6754 [cs.DS].
책들
- Chandra, Rohit (2001). Parallel Programming in OpenMP. Morgan Kaufmann. pp. 59–77. ISBN 1558606718.
- Solihin, Yan (2016). Fundamentals of Parallel Multicore Architecture. CRC Press. p. 75. ISBN 978-1-4822-1118-4.