본문 바로가기
프로그래밍 (Programming)/병렬 컴퓨팅 (Parallel Computing)

병렬 컴퓨팅(Parallel Computing) 개념

by DevSci 2021. 10. 16.

※ 비전문가가 공부하며 정리한 자료라 잘못된 정보가 있을 수 있음


병렬 컴퓨팅은 무엇인가

직렬 컴퓨팅(Serial Computing)

일반적으로 소프트웨어는 순차적(=직렬) 계산으로 쓰여진다.

  • 문제는 명령의 개별 시리즈로 나눠진다.
  • 명령들(instructions)을 순차적으로 하나를 처리한 후 그 다음을 처리한다.
  • 하나의 프로세서에서 명령을 처리된다.
  • 언제나 하나의 명령만 처리한다.

Source : Lawrence Livermore National Laboratory / Livermore Computing Center

 

병렬 컴퓨팅(Parallel Computing)

가장 간단한 의미로, 병렬 컴퓨팅은 계산 문제를 해결하기 위한 여러 대의 컴퓨터 자원을 동시에 사용하는 것이다.

  • 하나의 문제는 동시에 해결할 수 있는 개별 문제들로 나눠진다.
  • 각각의 문제는 명령의 시리즈로 더 나눠진다.
  • 각각의 문제 속 명령들은 다른 프로세서에서 동시에 처리된다.
  • 전반적인 제어/조정 메커니즘(대표적으로 Open Grid Scheduler)이 사용된다.

Source : Lawrence Livermore National Laboratory / Livermore Computing Center

  • 병렬 컴퓨팅을 위한 계산 문제 조건
    • 동시에 해결할 수 있는 별개의 작업으로 쪼개질 수 있어야 한다.
    • 여러 프로그램의 명령을 언제든지 실행할 수 있어야 한다.
    • 단일 계산 자원보다 여러 계산 자원을 사용하여 더 짧은 시간에 해결할 수 있어야 한다.
  • 컴퓨터 자원은 일반적으로
    • 여러 개의 프로세서나 코어를 가진 단일 컴퓨터이다.
    • 네트워크에 연결된 컴퓨터의 임의 개수이다.

 

병렬 컴퓨터(Parallel Computer)

  • 오늘날 거의 모든 독립 실행형 컴퓨터는 하드웨어 관점에서 병렬이다.
    • 다중 기능 단위[multiple functional units]
      (L1 캐시, L2 캐시, branch, prefetch, 디코드, 부동 소수점, GPU(그래픽 처리), 정수 등)\
    • 다중 실행 단위/코어[multiple execution units/cores]
    • 다중 하드웨어 스레드[multiple hardware threads]

Source : IBM BG/Q Compute Chip with 18 cores (PU) and 16 L2 Cache units (L2)  

 

  • 네트워크는 여러 독립 실행형 컴퓨터(노드[node])를 연결하여 더 큰 병렬 컴퓨터 클러스터를 만든다.

Source : Lawrence Livermore National Laboratory / Livermore Computing Center

 

  • 예를 들어, 아래 개략도는 일반적인 LLNL 병렬 컴퓨터 클러스터를 보여준다.
    • 각 계산 노드[compute node]는 그 자체로 다중 프로세서 병렬 컴퓨터이다.
    • 여러 계산 노드가 Infiniband 네트워크로 연결된다.
    • 특수 용도 노드, 멀티 프로세서 또한 다른 용도로 사용된다.

Source : Lawrence Livermore National Laboratory / Livermore Computing Center

 

  • 세계 대부분의 대형 병렬 컴퓨터(= 슈퍼 컴퓨터)는 소수의 잘 알려진 공급업체가 생산한 하드웨어 클러스터이다.
    • (2021년 6월 기준) 레노버(Lenovo)가 36.8%로 압도적인 시장 점유율을 보이고 있다.
    • 이어서 인스퍼(Inspur), 휴렛팩커드(Hewlett Packard Enterprise; HPE), 중커수광(Sugon) 아토스(Atos) 순이다.
    • 무서운 점은 레노버, 인스퍼, 중커수광은 중국 회사로 총 점유율이 50%를 넘는다는 것...
    • 참고로 HPE는 미국 회사, 아토스는 프랑스 회사이다.

Source : TOP500.org (2021년 6월 기준)




병렬 컴퓨팅을 사용는 이유

실제 세상은 아주 복잡하다

  • 자연계에서는 많이 복잡하고 상호 연관된 사건들이 동시에, 그러나 시간순으로 일어나고 있다.
  • 직렬 컴퓨팅에 비해 병렬 컴퓨팅은 복잡한 현실 세계의 현상을 모델링하고, 시뮬레이션하고, 이해하는 데 훨씬 적합하다.
  • 아래는 병렬 컴퓨팅을 활용 예시
    • 은하 형성, 행성 운동, 기후 변화 시뮬레이션
      Source : Lawrence Livermore National Laboratory / Livermore Computing Center
    • 혼잡 시간 교통 체증, 판구조, 날씨 예측
      Source : Lawrence Livermore National Laboratory / Livermore Computing Center

 

병렬 프로그래밍을 사용하는 가장 큰 이유

1. 시간 또는 돈을 절약한다.

  • 이론적으로 작업에 더 많은 리소스를 투입하면 완료 시간이 단축되고 잠재적인 비용 절감 효과가 있다.
  • 병렬 컴퓨터는 값싸고 일반적인 부품으로 만들 수 있다.

 

2. 더 크고 / 더 많은 복잡한 문제들을 해결한다.

  • 많은 문제들은 아주 크고 복잡해서 직렬 프로그램으로 해결하는 것은, 특히 제한된 컴퓨터 메모리를 감안할 때, 비현실적이거나 불가능하다.
  • 예 : 페타플롭(petaflops) 및 페타바이트(petabytes) 규모의 계산 자원이 필요한 "Grand Challenge Probelms"
  • 예 : 매초 수백만 건의 처리(transactions)를 처리하는 웹 검색 엔진/데이터베이스

 

3. 동시 실행(concurrency)를 제공한다.

  • 단일 계산 자원은 한 번에 한 가지 작업만 수행할 수 있지만, 다중 계산 자원은 동시에 여러 가지 작업을 수행할 수 있다.
  • 예 : Collaborative Networks는 전세계 사람들이 "가상으로" 만나 작업을 수행할 수 있는 글로벌 장소를 제공한다.

 

4. 멀리 떨어진(non-local) 자원들을 활용한다.

  • 로컬 계산 자원이 양이 부족하거나 성능이 충분하지 않은 경우 광역 네트워크 또는 인터넷 상의 계산 자원을 사용한다.
  • 예 : (2018년 5월 기준) SETI@Home은 전세계 거의 모든 국가에서 170만 명 이상의 사용자를 보유하고 있다.

 

5. 병렬로 구성된 하드웨어를 더 잘 사용한다.

  • 현대의 컴퓨터, 심지어 노트북도 프로세서/코어가 여러 개인 컴퓨터의 구성(architecture)에서 병렬로 존재한다.
  • 병렬 소프트웨어는 특히 다중 코어, 스레드 등이 있는 병렬 하드웨어를 대상으로 한다.
  • 대부분의 경우, 현대 컴퓨터에서 실행되는 직렬 프로그램은 잠재적인 컴퓨터 성능을 "낭비"한다.

 

향후 전망

  • 과거 20년이 넘는 시간동안, 훨씬 더 빠른 네트워크, 분산 시스템, 멀티 프로세서 컴퓨터 구성 (특히 데스크탑 수준)에서 나타난 추세는 병렬화가 컴퓨팅의 미래임을 분명하게 보여준다.
  • 같은 기간 동안 슈퍼컴퓨터 성능은 50만 배 이상 증가했으며, 지금은 끝이 보이지 않는다.
  • Exascale 컴퓨팅 경쟁은 이미 진행 중이다. 우리는 Exascale 시대에 접어들고 있다!

Source : TOP500.org

 


병렬 컴퓨팅은 누가 쓰나

과학(Science)과 공학(Engineering)

  • 역사적으로 병렬 컴퓨팅은 "the high end of computing"으로 여겨져 왔으며, 과학과 공학의 많은 분야에서 어려운 문제를 모델링하는데 사용되어 왔다.
  • 대기(Atmosphere), 지구(Earth), 환경(Environment)
  • 물리학(Physics) - 응용(applied), 핵(nuclear), 입자(particle), 응집 물질(condensed matter), 고압(high pressure), 핵융합(fusion), 광자학(photonics)
  • 생명과학(Bioscience), 생명공학(Biotechnology), 유전학(Genetics)
  • 화학(Chemistry), 분자과학(Molecular Science)
  • 지질학(Geology), 지진학(Seismology)
  • 기계 공학(Mechanical Engineering) - 인공기관(prosthetics)부터 우주선(spacecraft)까지
  • 전자 공학(Electrical Engineering), 회로 설계(Circuit Design), 초소형 전자공학(microelectronics)
  • 컴퓨터 과학(Computer Science), 수학(Mathematics)
  • 방위 산업(Defense), 무기(Weapons)

 

산업(Industiral)과 상업(Commercial)

  • 오늘날 상용 애플리케이션은 더 빠른 컴퓨터 개발에 더 큰 원동력을 제공한다. 이러한 애플리케이션은 많은 양의 데이터를 정교한 방식으로 처리해야 한다. 아래는 예시 분야이다.
  • "빅데이터(Big Data)", 데이터베이스(database), 데이터 마이닝(data mining)
  • 인공지능(Artificial Intelligence; AI)
  • 석유 탐사(Oil exploration)
  • 웹 검색 엔젠(Web search engines), 웹 기반 비즈니스 서비스(web based business services)
  • 의료 영상 및 진단(Medical imaging and diagnosis)
  • 제약 설계(Pharmaceutical design)
  • 재무 및 경제 모델링(Financial and economic modeling)
  • 국가 및 다국적 기업의 경영(Management of national and multi-national corporations)
  • (특히 엔터테인먼트 산업에서) 고급 그래픽 및 가상 현실(Advanced graphics and virtual reality, particularly in the entertainment industry)
  • 네트워크화된 비디오 및 멀티미디어 기술(Networked video and multi-media technologies)
  • 협업 작업 환경(Collaborative work environments)

Source : Lawrence Livermore National Laboratory / Livermore Computing Center

 

광범위한 응용

  • 병렬 컴퓨팅은 현재 전세계에 걸쳐 아주 다양하게 응용되어 광범위하게 사용되고 있다.
  • (2021년 6월 기준) 역시나 연구 분야에 가장 많이 쓰이고 있다.

Source : TOP500.org




◐ 참고문헌(References)

Lawrence Livermore National Laboratory / Livermore Computing Center - Introduction to Parallel Computing Tutorial
삼성SDS 스토리 - 병렬컴퓨팅
위키피디아 - Parallel Computing
OMNISCI - Parallel Computing
GeeksforGeeks - Introduction to Parallel Computing

댓글