본문 바로가기
CS/Linux

OpenMp 병렬 프로그래밍

by JHyun0302 2023. 8. 29.
728x90

스레드 (thread) : 프로세스 내 실행되는 흐름의 단위

  • single thread : 한 프로세스에서 하나의 스레드를 가지고 실행하는 방식
  • multithread : 한 프로세스에서 둘 이상의 스레드를 동시에 실행하는 방식

 

 

 

multiprocess &  multithread

※ 공통점 : 한 프로그램이 여러 흐름으로 동시에 실행

★ 차이점 

- multiprocess

     1. 각 프로세스는 독립적으로 실행, 각각 별개의 메로리 차지

     2. Distributed-memory 방식 (분산 메모리 방식)

     3. 구현 방법 : MPI 병렬 프로그래밍

 

 

 - multithread

    1. 각 스레드는 독립적으로 실행되지만 한 프로세스 내 메모리 공유

    2. Shared-memory 방식 (공유 메모리 방식)

    3. 구현 방법 : CreateThread, 리눅스의 pthread, OpenMp 병렬 프로그래밍

 

 

 

 

☆ 암달의 법칙 : 병렬 영역의 실행 속도가 향상되어도 순차 영역으로 인해 프로그램 전체적으론 속도 개선 효과에는 한계가 있다

 

 

 

 

 

 

 


`#pragma omp parallel`

 

멀티 스레드로 실행되는 병렬 영역의 생성(Fork) & 해제 (Join)

 

 

 

 

Fork : 마스터 스레드가 `#pragma omp parallel` 만나면 병렬 영역 & 스레드 팀 생성

 

 

※ Join : 병렬 작업 모두 완료될 때까지 기다리며(=암시적 동기화) 완료되면 마스터 스레드는 슬레이브 스레드 소멸시킴

 

 

 

 

 

 

 

 

 

반응형

'CS > Linux' 카테고리의 다른 글

MPI 병렬 프로그래밍  (0) 2023.08.30
Process & Signal  (0) 2023.08.29
디렉토리 관리 관련 함수  (0) 2023.08.29
파일 관리 관련 함수  (0) 2023.08.29
Func (File System & File Input/Output)  (0) 2023.08.29