본문 바로가기
Programming

병렬과 분산컴퓨팅 소개(1)

by 오뚝오뚝 2021. 3. 1.

*본 내용은 프란세스코 피에르페레데시 저의 파이썬 분산 컴퓨팅 책을 요약한 내용

 

병렬 컴퓨팅 (parallel computing) : 사실 여러 processor를 동시에 사용하는 방식

- distributed computing 분산 컴퓨팅과는 차이가 존재함.

   - 분산컴퓨팅 : 어떠한 문제를 해결하기 위해 여러대의 컴퓨터를 동시에 사용하는 것

개념 측면에서 두개의 차이는 어떠한 계산을 여러개의 작은 부분으로 쪼개느냔 아니면 여러 곳에서 실행하느냐의 차이

 

- 추가 정보 -

SISD : Single Instruction, Single Data Stream

- 하나의 명령에 하나의 데이터가 순차적으로 처리 (싱글 코어)

- 성능 향상을 위해 [파이프 라이닝, 슈퍼스칼라] 같은 기법 사용 가능

- 하드웨어 수준의 멀티스레드 방식 [SMT, simultaneous multithreading] , 의존성이 없는 두개의 스레드가 동시에 파이프 라이닝을 수행

* 파이프라이닝 : 동시에 처리 가능한 것은 동시에 처리함으로써 처리량을 올리는 것

- 파이프라이닝에 의한 속도향상은 파이프라인의 단계 수와 같음

 

SIMD : Single Instruction Multiple Data Stream

- 하나의 명령에 여러개의 데이터가 처리되는 구조

- 즉 다수의 데이터에 처리되는 연산이 동일한 경우로 데이터간 의존성이 없는

- 벡터프로세서 라는 구조

 

MIMD : Multiple Instruction Multiple Data Stream

- 일반적인 멀티프로세서 형태 

- 강기억 형태 : 다수의 프로세서들이 주기억장치를 공유하는 경우 (공유 메모리 시스템)

- 약 결합 구조 : 각각의 프로세서가 독립적인 주기억장치를 가진 형태로 분산 메모리 시스템

 

 

- 병렬 application에 사용되는 도구가 thread

(파이썬은 스레드 제한이 걸려있다? 그래서 sub-processor 인 포크를 이용한다)

 

(1) 멀티 스레드 프로그래밍

 

(2) 멀티 프로세싱

 

메모리 공유 아키텍쳐? 분산 메모리 아키텍쳐? 

 

공유 메모리 아키텍쳐는 하나의 공유되는 메모리를 기반으로.

(즉, 동일한 메모리 주소 공간에 접근하는 형태)

(공유 메모리는 RAM에 올라가고 반드시 같은 기계에서 가능,)

- 동시에 여러 cpu가 하나의 메모리에 접근함에 문제도 발생

 

반면 분산 메모리 아키텍쳐는 서로 분리되어 있고, 네크워크를 통해 통신이 되어야 가능.

이런 소프트웨어 계층(미들웨어) 라는 것이 필요해짐. 

 

 

공유 메모리 시스템 : 

SMP (Symmetric Multiprocessor) : 가장 대표적인 형태, 하나의 운영체제가 모든 프로세서를 관리하는 구조

- Bus, Quick Path Interconnect, 크로스바 스위치 등과 같은 프로토콜로 여러 cpu와 주변장치가 고속 통신을 수행

 

CMP (Chip Multiprocessor) : SMP의 일종, 하나의 칩에 여러 코어를 장착. 단일 CPU 에 연산을 담당하는 코어를 여러개 두고 캐시를 서로 공유하는 구조

댓글