지도(병렬 패턴)
Map (parallel pattern)지도는 병렬 컴퓨팅의 숙어로, 간단한 연산을 시퀀스의 모든 요소에 적용하며, 잠재적으로 병렬로 적용한다.[1]그것은 당혹스러울 정도로 평행한 문제들, 즉 독립된 하위 작업으로 분해될 수 있는 문제들, 마지막에 조인이나 장벽을 제외한 하위 작업들 사이의 의사소통/동기화가 필요하지 않은 문제들을 해결하기 위해 사용된다.
지도 패턴을 적용할 때 문제의 일부를 나타내는 데이터 항목에 대해 수행할 작업을 캡처하는 요소 함수를 공식화한 다음, 하나 이상의 실행 스레드, 하이퍼스레드, SIMD 레인 또는 여러 대의 컴퓨터에 이 요소 함수를 적용한다.
OpenMP와 Cilk와 같은 일부 병렬 프로그래밍 시스템은 루프용 병렬 형태의 지도 패턴에 대한 언어 지원을 가지고 있으며,[2] OpenCL과 CUDA와 같은 언어는 언어 수준에서 요소 기능("커널"로)을 지원한다.지도 패턴은 일반적으로 다른 병렬 설계 패턴과 결합된다.예를 들어, 카테고리 축소와 결합된 맵은 맵리듀스 패턴을 제공한다.[3]: 106–107
참고 항목
참조
- ^ Samadi, Mehrzad; Jamshidi, Davoud Anoushe; Lee, Janghaeng; Mahlke, Scott (2014). Paraprox: Pattern-based approximation for data parallel applications (PDF). Proc. 19th Int'l Conf. on Architectural support for programming languages and operating systems. doi:10.1145/2541940.2541948.
- ^ Wolfe, Michael (6 April 2015). "Compilers and More: The Past, Present and Future of Parallel Loops". HPCwire.
- ^ Michael McCool; James Reinders; Arch Robison (2013). Structured Parallel Programming: Patterns for Efficient Computation. Elsevier. ISBN 978-0124159938.
