Skip to content

image

Parallel Computing

Parallel Computing(병렬 컴퓨팅)은 여러 processor 또는 core를 동시에 활용하여
하나의 큰 계산 작업을 더 빠르게 처리하기 위한 computing 방식임.

단일 processor만 사용하는 방식에 비해
대규모 data 처리, scientific simulation, machine learning, deep learning 등에서
훨씬 높은 처리 성능을 얻을 수 있음.

참고: Concurrency (동시성)과 Parallelism (병렬성)



병렬 컴퓨팅의 종류 (Flynn의 분류 방식, Flynn's Taxonomy):

병렬 컴퓨팅을 설명할 때 가장 많이 사용되는 분류 중 하나가
Flynn's Taxonomy(Flynn의 분류 방식)임.

Flynn's Taxonomy는 instruction stream과 data stream의 개수에 따라
computer architecture를 다음과 같이 분류함.

  • SIMD (Single Instruction Multiple Data) *** :
    • 동일한 명령어(하나의 instruction stream)로 여러 데이터(여러 data stream)를 동시에 처리.
    • 예: 벡터 프로세서, Intel's SSE (Intel Streaming SIMD Extension), Intel AVX(Advanced Vector Extensions), GPU의 vectorized 연산
    • 예를 들어, 여러 pixel에 같은 filtering 연산을 동시에 적용하거나, 여러 vector element에 같은 덧셈 연산을 동시에 수행하는 경우가 SIMD에 해당함.
  • MIMD (Multiple Instruction Multiple Data):
    • 각 프로세서가 서로 다른 명령어를 수행하며 다른 데이터를 처리.
    • 여러 processor가 서로 다른 instruction stream을 수행하면서, 각기 다른 data stream을 처리하는 방식임.
    • 각 core 또는 node가 독립적으로 다른 작업을 수행할 수 있기 때문에 범용 병렬 컴퓨팅에서 가장 일반적으로 사용되는 구조
    • 예: 일반적인 멀티 코어 시스템, multiprocessor system, cluster system 등.
  • SPMD (Single Program Multiple Data):
    • 여러 프로세서가 동일한 프로그램 코드를 실행하지만, 각 프로세서가 처리하는 데이터는 다름.
    • SPMD가 Flynn's Taxonomy의 원래 4분류에 들어가는 독립 항목은 아님.
    • program은 같지만 각 process 또는 device가 담당하는 data가 다르기 때문에 Single Program Multiple Data라고 부름.
    • 예: 분산 메모리 (distributed memory) 환경에서의 병렬 컴퓨팅

다음의 URL에 보다 자세한 내용이 있음: Flynn's Taxonomy

CPU에서 pipelining 을 가리키는 MISD (Multiple Instruction, Single Data)나, von Neumann Architecture가 사용한 SISD (Single Instruction Single Data, 전통적인 sequential computer)도 있으나 이들은 Parallel computing과 거리가 있어 위의 목록에서 제외함.



병렬 컴퓨팅 시스템의 주요 유형과 발전사:

병렬 컴퓨팅 시스템은 hardware 구성 방식과 resource를 묶는 방식에 따라
여러 형태로 발전해 왔음.

초기 병렬 컴퓨팅 (1950~1960년대):

초기 병렬 컴퓨팅은 대형 computer system에서 시작됨.

이 시기의 병렬 컴퓨팅은 오늘날의 multicore CPU나 GPU와는 다르지만,
여러 연산 장치를 동시에 사용하여 계산 성능을 높이려 했다는 점에서
현대 병렬 컴퓨팅의 중요한 출발점으로 볼 수 있음.

  • 1957년 MIMD 방식의 병렬컴퓨팅을 도입한 Gamma 60 (프랑스) 등장.
  • 1960년대 후반, SIMD 방식의 병렬컴퓨팅을 도입한 ILLIAC IV (Illinois Automatic Computer 4) 개발

Cluster System 의 등장 (1980년대):

Cluster System은 여러 독립적인 computer를 network로 연결하여
하나의 system처럼 동작하도록 구성한 병렬 컴퓨팅 시스템임.

각 computer는 node라고 부르며, 각 node는 독립적인 CPU, memory, storage, operating system을 가질 수 있음. 여러 node가 network를 통해 작업을 나누어 처리한다는 점이 특징.

  • 1980년대 초반, Network File System(NFS) 기술 개발로 cluster 환경에서 여러 node가 동일한 file system에 접근할 수 있게 됨.
  • 여러 독립적인 컴퓨터(노드)를 고속 네트워크로 연결하여 하나의 시스템처럼 작동
  • 주로 고성능 컴퓨팅(HPC) 에서 활용

NFS는 네트워크를 통해 파일을 공유할 수 있게 해주는 프로토콜 로,
선 마이크로시스템즈(Sun Microsystems)에 의해 개발됨.

  • NFS를 통해 여러 컴퓨터가 동일한 파일 시스템에 접근 할 수 있어,
  • 네트워크 환경에서 파일 공유와 협업이 가능해짐.

이 기술은 클러스터 시스템과 분산 파일 시스템의 발전에 중요한 역할을 했음.

그리드 시스템의 발전 (1990~2000년대):

Grid System은 지리적으로 분산된 computing resource를 연결하여
대규모 계산 작업을 수행하는 방식

Cluster System이 비교적 가까운 위치의 node들을 긴밀하게 묶는 방식이라면, Grid System은 서로 다른 기관, 지역, network에 흩어진 resource를 느슨하게 연결하는 방식에 가까움.

  • 1990년대와 2000년대 초반, SETI@home (보통 세티,SETI로 읽음) 등 분산 그리드 컴퓨팅 프로젝트 활발히 진행
  • 지리적으로 분산된 자원을 연결하여 대규모 병렬 처리 가능
  • 과학 연구, 비즈니스, 엔터테인먼트 등 다양한 분야에서 활용

SETI@home은 Search for Extraterrestrial Intelligence at Home 의 약자로
UC Berkeley의 SETI 연구 센터에서 주도한 분산 컴퓨팅 프로젝트 를 가리킴.
전 세계의 일반 사용자들이 자신의 컴퓨터를 이용해 외계 지적 생명체를 탐색하는 데 기여할 수 있도록 설계된 프로젝트로
SETI@home의 핵심 아이디어는 다음과 같음:

  • 사용자들은 인터넷을 통해 SETI@home 소프트웨어를 다운로드하여 설치.
  • 이 소프트웨어는 사용자의 컴퓨터가 유휴 상태일 때 전 세계의 전파망원경에서 수집된 신호 데이터를 분석 함.
  • 데이터는 작은 조각으로 나누어져 많은 사용자들에게 배포되고, 각 사용자는 자신의 컴퓨터에서 할당된 데이터를 처리함.
  • 분석 결과는 다시 SETI 연구 센터로 전송되어 외계 신호의 존재 가능성을 평가하는 데 사용됨.

이 프로젝트는 전 세계 수백만 명의 자원 봉사자들이 참여하여 엄청난 양의 데이터를 처리할 수 있게 했으며, 분산 컴퓨팅의 가능성을 보여준 중요한 사례로 꼽힘.
참고로 2020년 3월 이후로 참여자(자원봉사자)들에게 새로운 작업 배포는 중단된 "휴면" 상태이며 프로젝트 팀은 축척된 20년치 데이터 분석에 집중하고 있음.
BOINC (Berkeley Open Infrastructure for Network Computing, 보잉크라고 주로 읽힘) 플랫폼을 사용한 대표 프로젝트였음.

다음의 프로젝트들이 BOINC 플랫폼을 사용하여 진행되고 있음:

  • MilkyWay@home : 우리 은하의 구조를 모델링하기 위한 천체물리학 계산.
  • Rosetta@home : 단백질 folding 및 COVID-19 관련 약물 설계 등을 포함한 생명과학 연구
  • Climateprediction.net : 장기 기후 변화 예측 모델을 위한 시뮬레이션 연구.

멀티 프로세서 시스템의 확산 (2000년대):

Multiprocessor System은 하나의 computer system 안에 여러 processor를 두는 구조임.

  • 2000년대 초반, 듀얼 프로세서 시스템 보급
  • 2000년대 후반, 멀티코어 프로세서 등장하여 단일 시스템 내에 여러 프로세서 포함
  • 2025년 현재,
    • Desktop PC의 경우, IntelCore i9 (24코어, i9-14900K) 및 AMD Ryzen 9 (16코어, Ryzen 9 7950X) 등은 매우 16-24개의 코어를 자랑함.
    • Notebook 의 경우 10-16코어 수준임(i7-1360p)
  • 데스크탑, 서버, 모바일 장치 등 광범위하게 활용
  • 게임 콘솔 분야에서도 멀티 프로세서 시스템 활용 증가

“멀티프로세서”라는 용어는 원래 “여러 CPU(프로세서)”를 의미하지만,
오늘날 대부분은 하나의 칩에 여러 코어를 가진 멀티코어 CPU를 사용하는게 일반적임 (PC기준).
단, 두 개 이상의 CPU를 장착하는 서버나 워크스테이션도 존재함.

GPGPU의 활용 (2000년대 후반~현재):

GPGPU(General-Purpose computing on Graphics Processing Units)는
원래 graphics 처리를 위해 설계된 GPU를
일반적인 계산 작업에 활용하는 방식임.

GPU는 매우 많은 수의 작은 연산 unit을 가지고 있기 때문에 동일하거나 유사한 연산을 대량의 data에 반복 적용하는 작업에 강함.

  • 2000년대 후반, CUDA (Compute Unified Device Architecture) 등 GPGPU 프로그래밍 언어 및 프레임워크 등장
  • GPU의 다수 작은 코어를 활용하여 병렬 처리, 특히 머신 러닝, 데이터 분석, 시뮬레이션 분야에서 높은 성능 발휘
  • Deep Learning, 암호화, 생체정보 인식, 자연어 처리 등 다양한 분야에서 GPGPU 활용 증가


병렬 컴퓨팅 시스템 비교

항목 Cluster System Grid System Multi-processor System GPGPU System
구조 고속 네트워크로 연결된
물리적으로 근접한 노드들
지리적으로 분산된 자원 단일 시스템 내
여러 프로세서(or Core)
다수의 코어로 구성된 GPU
통합 수준 매우 긴밀한 통합 느슨한 통합 매우 긴밀한 통합 GPU 내에서 긴밀한 통합
운영 환경 동일한 운영 체제와 하드웨어 이기종 환경 단일 시스템 CPU와 GPU 간 협력
확장성 제한적 매우 높음 제한적 제한적
주요 사용 사례 과학 계산, HPC 분산 컴퓨팅, 대규모 데이터 처리 데스크탑, 서버, 모바일 장치 머신 러닝, 데이터 분석, 시뮬레이션
관리 및 운영 중앙 집중식 관리 선호 분산 관리 단일 시스템 내 관리 GPU 및 프레임워크 관리
성능 높은 성능 및 신뢰성 네트워크에 따라 다름 높은 처리 성능 매우 높은 병렬 처리 성능
비용 고비용 비용 효율적 전력 효율적, 공간 절약 비용 효율적, 높은 성능 대비 저렴

이 네 가지 병렬 컴퓨팅 시스템은 각각의 특성과 장단점을 가지고 있으며, 각기 다른 요구와 환경에 따라 적합한 솔루션을 제공함.
이를 통해 사용자는 최적의 성능을 달성하고, 다양한 컴퓨팅 작업을 효율적으로 처리할 수 있음.