병렬 프로그래밍 용어 정리
그 외2020. 6. 11. 21:34
병렬 프로그래밍¶
병렬처리가 가능한 경우
- 서로 영향을 미치지 않는 경우 병렬처리가 불가능한 경우
- 직렬적 연산이 필요한 경우
병렬처리의 종류
- Thread나 Core를 통한 병렬 프로그래밍
- GPGPU를 통한 병렬 프로그래밍
- Process 병렬 프로그래밍(여러 컴퓨터 개념)
SIMD(Single Instruction Multiple Data)
- 하나의 명령어로 여러개의 값을 동시에 계산하는 방식
SISD(Single Instruction Single Data)
- 한 프로세서가 한번에 하나의 명령어를 처리할 때 하나의 메모리에 저장되어 있는 한 데이터를 이용하여 처리하는 것 (https://ko.wikipedia.org/wiki/SISD)
MISD(Multiple Instruction Single Data)
- 각기 다른 명령어를 처리하는 처리부 여러개가 동일한 데이터를 처리하는 병렬 컴퓨팅 아키텍쳐를 의미.
MIMD(Multiple Instruction Multiple Data)
- 공유메모리나 분산메모리에 해당
Python에서는?¶
Thread 기반 병렬 프로그램
- OpenMP
- pthreads
- Parallel Pattern Library Process 기반
- MPI
- HPF
- PVM GPGPU 기반
- CUDA
- openCV
CUDA¶
- GTX 이후 생산되는 GPU를 의미함.
- Geforce : 일반적인 그래픽카드
- Quadro : 고성능 그래픽 작업전용
- Tesla : 그래픽 기능 없이 고성능 연산 전용
CPU와 GPU의 Transistor¶
CUDA 병렬처리의 용어¶
- Kernel : GPU에서 병렬 실행되는 명령어의 모음
- Thread : Kernel 함수등이 호출되었을 때 실제로 업무를 수행하는 최소단위. 멀티프로세서 내에서 작동되는 코어 하나
- Block : 작업단위(SM)를 의미하며 하나의 멀티 프로세서에서 작동되는 스레드의 모음을 의미. 쓰레드가 마치 원소로 구성된 어레이처럼 다차원 구성 가능
- Grid : Block 의 집합
- Warp : 작업단위 내에서 동시 실행 가능한 Thread의 개수(ex 32개 쓰레드 들을 단위로 묶은 것)
- Registor : On Chip Processor에 있는 Memory로 가장 빠른 메모리. 커널함수에서 로컬 변수를 많이 사용할 수록 사용량이 증가.
- Shared Memory : On Chip Processor에 있는 Memory, SM 내의 Thread들이 공유(중요), L1 캐시급 속도
- Global Memory : GPU에 장착된 DRAM, GPU 칩 외부에 존제하여 속도는 느린편이지만 CPU보다는 상당히 빠르다. READ/Write : 400~ 600 Cycles
- Constant Memory(64KB) : DRAM에 있는 데이터를 읽기전용 캐시를 지원,글로벌 메모리처럼 모든 스레드가 공유 , Write( from DRAM) :400~ 600 Cycles, Read : Registor와 동급
- Texture Memory : 캐시 읽기를 지원하는 Gloval Memory
CUDA 스트리밍¶
- 연산속도에 비해 Host DRAM과 GPU DRAM의 데이터 전송 속도가 느림
- 큰 데이터를 가공할 경우 연산시간보다 DATA전송시간의 비중이 커짐
- DATA전송 및 연산시간을 작은 단위로 나누어 순차적으로 진행
CUDA Library¶
- cuRAND : 랜덤 수 생성
- cuFFT(CUDA Fast Fourier Transform Library) : FFT 연산 라이브러리
- CUBLAS(CUDA Basic Linear Algebra Subroutines library) : 선형대수 연산 라이브러리
커널함수 : CPU에 의해 호출되 GPU에서 실행
Device 함수 : GPU에서 실행 Host 함수 : CPU에서 실행
example¶
- Beam Pattern 생성
- cubic Spline Interpolation : 병렬화는 가능하나 Sequential 에 비해 검색시간이 느림(실패)
- 라즈베리파이, 비트코인
헤테로 지니어스 컴퓨팅¶
- 한가지 이상의 프로세서를 내장한 시스템
- CPU는 복잡하고 선형적인 작업에 효율적, GPU는 병렬화 가능한 반복작업에 효율적
In [ ]:
'그 외' 카테고리의 다른 글
파랑, 풍랑 그리고 너울 (0) | 2020.08.03 |
---|---|
인터넷 속도 올리기 (0) | 2020.02.01 |
[R] 재미삼아 푸는 문제 (0) | 2020.01.15 |
지도 그림 그리기 예제 (0) | 2019.11.11 |
[주식] 키움 영웅문 통한 주식 자료다운로드 (0) | 2019.11.11 |