data analysis & visualization

 

 

 

 

병렬 프로그래밍

병렬처리가 가능한 경우

  • 서로 영향을 미치지 않는 경우 병렬처리가 불가능한 경우
  • 직렬적 연산이 필요한 경우

병렬처리의 종류

  • 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