SlideShare a Scribd company logo
1 of 27
Download to read offline
병렬 프로그래밍과 CUDA
icysword@nate.com
Parallel Programming & CUDA
윤 석준 책임연구원
2014-04-23 2 윤석준 (icysword@nate.com)
이 발표에서 다루는 것
1. 병렬 프로그래밍의 이해
2. 병렬 프로그래밍 기법
2.1. Core 내부 병렬 프로그래밍
2.2. Thread 병렬 프로그래밍
2.3. Process 병렬 프로그래밍
2.4. GPGPU를 이용한 병렬 프로그래밍
3. CUDA 란 ?
4. CUDA 적용 사례
5. 최근 병렬화 이슈
6. 질의 및 응답
2014-04-23 3 윤석준 (icysword@nate.com)
Moore의 법칙
마이크로칩의 처리 능력이 18개월마다 2배로 늘어난다
CO-FOUNDER, INTEL
Intel Core i3 / i5 / i7
2010년 1월 Clarkdale 기준
- i3 : 3.3 GHz
- i5 : 3.6 GHz
- i7 : 3.2 GHz
2014년 2월 현재 Haswell 기준
- i3 : 2.4 GHz
- i5 : 2.9 GHz
- i7 : 3.3 GHz
2014-04-23 4 윤석준 (icysword@nate.com)
Multicore Processor
i7 i5 i3
Cores 4 4 2
Threads 8 4 4
2014-04-23 5 윤석준 (icysword@nate.com)
병렬 프로그래밍
𝒌
𝟏𝟎𝟎𝟎𝟎
𝑘=0
병렬처리가 가능한 경우
- 서로 영향을 미치지 않는 작업들
𝒌
𝟏𝟎𝟎𝟎
𝑘=0
𝒌
𝟐𝟎𝟎𝟎
𝑘=𝟏𝟎𝟎𝟏
𝒌
𝟏𝟎𝟎𝟎𝟎
𝑘=𝟗𝟎𝟎𝟏
…
+
병렬처리가 불가능한 경우
- Loop에서 앞의 계산값이 필요한 경우
피보나치 수열(Fibonacci Sequence)
2014-04-23 6 윤석준 (icysword@nate.com)
병렬 프로그래밍 기법
① Core 내부 병렬 프로그래밍
② Thread 병렬 프로그래밍
③ Process 병렬 프로그래밍
④ GPGPU를 이용한 병렬 프로그래밍
2014-04-23 7 윤석준 (icysword@nate.com)
Core 내부 병렬 프로그램
SIMD
(Single Instruction Multiple Data)
int a = 1 + 2;
int b = 3 + 4;
int c = 5 + 6;
int d = 7 + 8;
SISD
1 2a = +
3 4b = +
5 6c = +
7 8d = +
SIMD
1 3 5 7 2 4 6 8= +a b c d
• 기본적인 사칙 연산만 가능
• 별도의 Memory 할당 필요
• 제한된 Registor 개수
2014-04-23 8 윤석준 (icysword@nate.com)
Thread 병렬 프로그램
• OpenMP
• pthreads
• Parallel Pattern Library
• 멀티스레딩 프로그램
Loop 병렬화 Section 병렬화
2014-04-23 9 윤석준 (icysword@nate.com)
Process 병렬 프로그램
• MPI
• HPF
• PVM
2014-04-23 10 윤석준 (icysword@nate.com)
GPGPU 병렬 프로그램
2014-04-23 11 윤석준 (icysword@nate.com)
GPGPU 병렬 프로그램
Floating-Point Operations per Second for the CPU and GPU
● GTX 770 : 3.2 Tera FLOPs
● i7 : 141 Giga FLOPs
22.6배
2014-04-23 12 윤석준 (icysword@nate.com)
GPGPU 병렬 프로그램
Memory Bandwidth for the CPU and GPU
● GTX 770 : 224.3 GB/s
● i7 : 25.6 GB/s
8.8배
2014-04-23 13 윤석준 (icysword@nate.com)
CUDA란 ? (Compute Unified Device Architecture)
• 2006년 11월 GeForce 8800 GTX 이후 생산되는 GPU
• Geforce : 일반적인 Graphic Card
• Quadro : 고성능의 Graphic 작업 전용
• Tesla : Graphic 기능 없이 고성능 연산 전용
2014-04-23 14 윤석준 (icysword@nate.com)
CPU vs GPU
The GPU Devotes More Transistors to Data Processing
2014-04-23 15 윤석준 (icysword@nate.com)
CUDA Hardware Archetecture
• SM (Streaming Multiprocessor)
• CUDA Core (Streaming Processor)
2014-04-23 16 윤석준 (icysword@nate.com)
CUDA Data Parallel Threading Model
• Block : 작업단위 (SM)
• Warp : SM 내에서 동시 실행 가능한 Thread 개수
• Grid : Block 의 집합
• Thread : Block 안에서의 병렬화 (CUDA Core)
2014-04-23 17 윤석준 (icysword@nate.com)
Structure of CUDA Memory
• Registor
- On Chip Processor 에 있는 Memory
- 함수내의 Local 변수 (배열은 Global)
- 가장 빠른 메모리
• Shared Memory
- On Chip Processor 에 있는 Memory
- SM 내의 Thread 들이 공유
- L1 캐시급 속도
• Constant Memory
- 읽기전용 캐시
- Write (from DRAM) : 400 ~ 600 Cycles
- Read : Registor와 동급
• Global Memory
- Video Card에 장착된 DRAM
- Read/Write : 400 ~ 600 Cycles
• Texture Memory
- 캐시 읽기를 지원하는 Global Memory
- 설정 후 읽기전용
Register
Shared Memory
Constant Memory
Global Memory Texture Memory
2014-04-23 18 윤석준 (icysword@nate.com)
CUDA Streaming
• 연산 속도에 비해 Host DRAM 과 GPU DRAM의 Data 전송속도가 느림
• 큰 Data를 가공할 경우 연산시간보다 Data 전송시간의 비중이 더 커짐
• Data 전송 및 연산시간을 작은 단위로 나눠서 순차적으로 진행
2014-04-23 19 윤석준 (icysword@nate.com)
CUDA Library
• cuRAND : 랜덤수 생성기
(CUDA Random Number Generation library)
• CUFFT : FFT 연산 Library
(CUDA Fast Fourier Transform library)
• CUBLAS : 선형대수학 연산 Library
(CUDA Basic Linear Algebra Subroutines library)
2014-04-23 20 윤석준 (icysword@nate.com)
CUDA Programming 예제
float fResult[1024][1000];
float fData[1024][1000];
for (int i = 0; i < 1024; i++)
{
for (int j = 0; j < 1000; j++)
{
for (int k = 0; k < 33; k++)
{
fResult[i][j] += Calc(fData[i][j], k);
}
}
}
int main()
{
…
float *dev_fResult, *dev_fData;
int iSizeData = 1024 * 1000 * sizeof(float);
cudaMalloc((void**)&dev_fResult, iSizeData);
cudaMemset(dev_fResult, 0, iSizeData);
cudaMalloc((void**)&dev_fData, iSizeData);
cudaMemcpy(dev_fData, fData, iSizeData, cudaMemcpyHostToDevice);
KernelFunc<<<1024, 1000>>>(dev_fResult, dev_fData);
float* fResult = new float[1024 * 1000];
cudaMemcpy(fResult, dev_fResult, iSizeData, cudaMemcpyDeviceToHost);
cudaFree(dev_fResult);
cudaFree(dev_fData);
…
}
// 커널함수 : CPU에 의해 호출되어
// GPU에서 실행
// Device 함수 : GPU에서 실행
// Host 함수 : CPU에서 실행
// Atomic 연산 : Mutal Exclusion
// Device 메모리 할당
// Kernel 함수 호출
// Host 메모리 할당
__global__ void KernelFunc(float* i_fResult, float* i_fData)
{
float fResult = 0.0f;
int index = blockIdx.x * gridDim + threadIdx.x;
float fData = i_fData[index];
for (int k = 0; k < 33; k++)
{
fResult += Calc(fData, k);
}
i_fResult[index] = fResult;
}
2014-04-23 21 윤석준 (icysword@nate.com)
CUDA Compute capability (version)
http://en.wikipedia.org/wiki/CUDA
.
.
.
Technical specifications
Compute capability (version)
1 1.1 1.2 1.3 2.x 3 3.5 5
8800 GTX 8400M GT GTS 350M GTX 280 GTX 550 GTX 770 GTX TITAN GTX 750
Maximum dimensionality of grid of thread blocks 2 3
Maximum x-, y-, or z-dimension of a grid of thread blocks 65535 231
-1
Maximum dimensionality of thread block 3
Maximum x- or y-dimension of a block 512 1024
Maximum z-dimension of a block 64
Maximum number of threads per block 512 1024
Warp size 32
Maximum number of resident blocks per multiprocessor 8 16 32
Maximum number of resident warps per multiprocessor 24 32 48 64
Maximum number of resident threads per multiprocessor 768 1024 1536 2048
Number of 32-bit registers per multiprocessor 8 K 16 K 32 K 64 K
Maximum number of 32-bit registers per thread 128 63 255
Maximum amount of shared memory per multiprocessor 16 KB 48 KB 64 KB
2014-04-23 22 윤석준 (icysword@nate.com)
CUDA 6.0 : Unified Memory
http://devblogs.nvidia.com/parallelforall/unified-memory-in-cuda-6
2014-04-23 23 윤석준 (icysword@nate.com)
CUDA 적용 사례 : 성공 1
• Beam Pattern 생성
- 1000 방위 x 1000 주파수Bin
- 100개 Sensor ( 각 방위별 BeamPattern 생성)
- Data 전달 없음
CPU : 32 s
(OpenMP)
CUDA : 0.26 s
123배
2014-04-23 24 윤석준 (icysword@nate.com)
CUDA 적용 사례 : 성공 2
• 타겟 신호 에 Beam Pattern 적용
- 192 방위 x 1000 주파수Bin
- 16타겟
- Data Read/Write : 192 x 1000 x floatComplex x 2 (LOFAR/DEMON)
CPU : 900 ms
(OpenMP)
CUDA : 14 ms
64배
2014-04-23 25 윤석준 (icysword@nate.com)
CUDA 적용 사례 : 실패
• Cubic Spline Interoplation
CPU 연산에 비하여 성능 향상이 없음
… Xi(14) Xi(15) Xi(16) …
Xo(n) Xo(n+1)
- 입력 된 각각의 점들에 대하여 사용될 각종 변수들 계산 : Sequential Operation
- 출력값 연산 : 병렬화 가능은 하나 해당 위치를 찾을 시 Sequential에 비해 검색 시간이 느림
2014-04-23 26 윤석준 (icysword@nate.com)
최근 병렬화 이슈
• Raspberry-Pi
- 700 Mhz ARM11 CPU
- Broadcom Videocore IV GPU
- 256 Mbytes RAM
- 10.13 GFLOPs
- i7 : 141 GFLOPs
- 슈퍼컴퓨터 ‘천둥’ : 107 TFLOPs
http://www.raspberrypi.org
2014-04-23 27 윤석준 (icysword@nate.com)
최근 병렬화 이슈
• Multi-GPU Motherboard
http://prod.danawa.com/info/?pcode=2466508&cate1=861&cate2=875&cate3=968&cate4=0

More Related Content

What's hot

[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버Heungsub Lee
 
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍Seungmo Koo
 
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニーUnity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニーYoshifumi Kawai
 
실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략YEONG-CHEON YOU
 
Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜
Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜
Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜Hyperleger Tokyo Meetup
 
フロー技術によるネットワーク管理
フロー技術によるネットワーク管理フロー技術によるネットワーク管理
フロー技術によるネットワーク管理Motonori Shindo
 
OSvの概要と実装
OSvの概要と実装OSvの概要と実装
OSvの概要と実装Takuya ASADA
 
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫Yuta Imai
 
[Gpg2권 박민근] 3.2 게임 객체 ai를 위한 마이크로 스레드
[Gpg2권 박민근] 3.2 게임 객체 ai를 위한 마이크로 스레드[Gpg2권 박민근] 3.2 게임 객체 ai를 위한 마이크로 스레드
[Gpg2권 박민근] 3.2 게임 객체 ai를 위한 마이크로 스레드MinGeun Park
 
Why does my jenkins freeze sometimes and what can I do about it?
Why does my jenkins freeze sometimes and what can I do about it?Why does my jenkins freeze sometimes and what can I do about it?
Why does my jenkins freeze sometimes and what can I do about it?Tidhar Klein Orbach
 
Introduction to eBPF and XDP
Introduction to eBPF and XDPIntroduction to eBPF and XDP
Introduction to eBPF and XDPlcplcp1
 
Cilium - Network security for microservices
Cilium - Network security for microservicesCilium - Network security for microservices
Cilium - Network security for microservicesThomas Graf
 
FrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in FrostbiteFrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in FrostbiteElectronic Arts / DICE
 
LINEでビデオ通話してくれる妹を作ってみた
LINEでビデオ通話してくれる妹を作ってみたLINEでビデオ通話してくれる妹を作ってみた
LINEでビデオ通話してくれる妹を作ってみたYuji Ueki
 
LockFree Algorithm
LockFree AlgorithmLockFree Algorithm
LockFree AlgorithmMerry Merry
 
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...whywaita
 
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델Seungmo Koo
 
Optimizing the Graphics Pipeline with Compute, GDC 2016
Optimizing the Graphics Pipeline with Compute, GDC 2016Optimizing the Graphics Pipeline with Compute, GDC 2016
Optimizing the Graphics Pipeline with Compute, GDC 2016Graham Wihlidal
 
Unityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechconUnityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechconDeNA
 

What's hot (20)

[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
 
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
 
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニーUnity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
 
실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략
 
Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜
Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜
Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜
 
フロー技術によるネットワーク管理
フロー技術によるネットワーク管理フロー技術によるネットワーク管理
フロー技術によるネットワーク管理
 
OSvの概要と実装
OSvの概要と実装OSvの概要と実装
OSvの概要と実装
 
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
 
[Gpg2권 박민근] 3.2 게임 객체 ai를 위한 마이크로 스레드
[Gpg2권 박민근] 3.2 게임 객체 ai를 위한 마이크로 스레드[Gpg2권 박민근] 3.2 게임 객체 ai를 위한 마이크로 스레드
[Gpg2권 박민근] 3.2 게임 객체 ai를 위한 마이크로 스레드
 
Why does my jenkins freeze sometimes and what can I do about it?
Why does my jenkins freeze sometimes and what can I do about it?Why does my jenkins freeze sometimes and what can I do about it?
Why does my jenkins freeze sometimes and what can I do about it?
 
Introduction to eBPF and XDP
Introduction to eBPF and XDPIntroduction to eBPF and XDP
Introduction to eBPF and XDP
 
Cilium - Network security for microservices
Cilium - Network security for microservicesCilium - Network security for microservices
Cilium - Network security for microservices
 
FrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in FrostbiteFrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in Frostbite
 
LINEでビデオ通話してくれる妹を作ってみた
LINEでビデオ通話してくれる妹を作ってみたLINEでビデオ通話してくれる妹を作ってみた
LINEでビデオ通話してくれる妹を作ってみた
 
LockFree Algorithm
LockFree AlgorithmLockFree Algorithm
LockFree Algorithm
 
eBPF Basics
eBPF BasicseBPF Basics
eBPF Basics
 
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...
 
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
 
Optimizing the Graphics Pipeline with Compute, GDC 2016
Optimizing the Graphics Pipeline with Compute, GDC 2016Optimizing the Graphics Pipeline with Compute, GDC 2016
Optimizing the Graphics Pipeline with Compute, GDC 2016
 
Unityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechconUnityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechcon
 

Similar to 병렬프로그래밍과 Cuda

CUDA를 게임 프로젝트에 적용하기
CUDA를 게임 프로젝트에 적용하기CUDA를 게임 프로젝트에 적용하기
CUDA를 게임 프로젝트에 적용하기YEONG-CHEON YOU
 
[IBM 김상훈] AI 최적화 플랫폼 IBM AC922 소개와 활용 사례
[IBM 김상훈] AI 최적화 플랫폼 IBM AC922 소개와 활용 사례[IBM 김상훈] AI 최적화 플랫폼 IBM AC922 소개와 활용 사례
[IBM 김상훈] AI 최적화 플랫폼 IBM AC922 소개와 활용 사례(Joe), Sanghun Kim
 
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)khuhacker
 
Ibm과 nvidia가 제안하는 딥러닝 플랫폼
Ibm과 nvidia가 제안하는 딥러닝 플랫폼Ibm과 nvidia가 제안하는 딥러닝 플랫폼
Ibm과 nvidia가 제안하는 딥러닝 플랫폼ibmrep
 
테슬라 도조 프로젝트 (What is Tesla's Dojo Supercomputer?)
테슬라 도조 프로젝트 (What is Tesla's Dojo Supercomputer?)테슬라 도조 프로젝트 (What is Tesla's Dojo Supercomputer?)
테슬라 도조 프로젝트 (What is Tesla's Dojo Supercomputer?)BoanLabDKU
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발Jeongkyu Shin
 
Ic922 ac922 e dm_202008
Ic922 ac922 e dm_202008Ic922 ac922 e dm_202008
Ic922 ac922 e dm_202008jiyoungkim158
 
Remote-debugging-based-on-notrace32-20130619-1900
Remote-debugging-based-on-notrace32-20130619-1900Remote-debugging-based-on-notrace32-20130619-1900
Remote-debugging-based-on-notrace32-20130619-1900Samsung Electronics
 
헤테로지니어스 컴퓨팅 : CPU 에서 GPU 로 옮겨가기
헤테로지니어스 컴퓨팅 :  CPU 에서 GPU 로 옮겨가기헤테로지니어스 컴퓨팅 :  CPU 에서 GPU 로 옮겨가기
헤테로지니어스 컴퓨팅 : CPU 에서 GPU 로 옮겨가기zupet
 
Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014Gruter
 
mongodb와 mysql의 CRUD 연산의 성능 비교
mongodb와 mysql의 CRUD 연산의 성능 비교mongodb와 mysql의 CRUD 연산의 성능 비교
mongodb와 mysql의 CRUD 연산의 성능 비교Woo Yeong Choi
 
[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp진현 조
 
[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트
[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트
[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트OpenStack Korea Community
 
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처hoondong kim
 
Lablupconf session7 People don't know what they want until LABLUP show it to ...
Lablupconf session7 People don't know what they want until LABLUP show it to ...Lablupconf session7 People don't know what they want until LABLUP show it to ...
Lablupconf session7 People don't know what they want until LABLUP show it to ...Lablup Inc.
 
[232] 수퍼컴퓨팅과 데이터 어낼리틱스
[232] 수퍼컴퓨팅과 데이터 어낼리틱스[232] 수퍼컴퓨팅과 데이터 어낼리틱스
[232] 수퍼컴퓨팅과 데이터 어낼리틱스NAVER D2
 
빅데이터 윈윈 컨퍼런스-장비지원 사례연구
빅데이터 윈윈 컨퍼런스-장비지원 사례연구빅데이터 윈윈 컨퍼런스-장비지원 사례연구
빅데이터 윈윈 컨퍼런스-장비지원 사례연구ABRC_DATA
 

Similar to 병렬프로그래밍과 Cuda (20)

CUDA를 게임 프로젝트에 적용하기
CUDA를 게임 프로젝트에 적용하기CUDA를 게임 프로젝트에 적용하기
CUDA를 게임 프로젝트에 적용하기
 
[IBM 김상훈] AI 최적화 플랫폼 IBM AC922 소개와 활용 사례
[IBM 김상훈] AI 최적화 플랫폼 IBM AC922 소개와 활용 사례[IBM 김상훈] AI 최적화 플랫폼 IBM AC922 소개와 활용 사례
[IBM 김상훈] AI 최적화 플랫폼 IBM AC922 소개와 활용 사례
 
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
 
Ibm과 nvidia가 제안하는 딥러닝 플랫폼
Ibm과 nvidia가 제안하는 딥러닝 플랫폼Ibm과 nvidia가 제안하는 딥러닝 플랫폼
Ibm과 nvidia가 제안하는 딥러닝 플랫폼
 
Cuda intro
Cuda introCuda intro
Cuda intro
 
테슬라 도조 프로젝트 (What is Tesla's Dojo Supercomputer?)
테슬라 도조 프로젝트 (What is Tesla's Dojo Supercomputer?)테슬라 도조 프로젝트 (What is Tesla's Dojo Supercomputer?)
테슬라 도조 프로젝트 (What is Tesla's Dojo Supercomputer?)
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
 
Ic922 ac922 e dm_202008
Ic922 ac922 e dm_202008Ic922 ac922 e dm_202008
Ic922 ac922 e dm_202008
 
Nvidia architecture
Nvidia architectureNvidia architecture
Nvidia architecture
 
Remote-debugging-based-on-notrace32-20130619-1900
Remote-debugging-based-on-notrace32-20130619-1900Remote-debugging-based-on-notrace32-20130619-1900
Remote-debugging-based-on-notrace32-20130619-1900
 
헤테로지니어스 컴퓨팅 : CPU 에서 GPU 로 옮겨가기
헤테로지니어스 컴퓨팅 :  CPU 에서 GPU 로 옮겨가기헤테로지니어스 컴퓨팅 :  CPU 에서 GPU 로 옮겨가기
헤테로지니어스 컴퓨팅 : CPU 에서 GPU 로 옮겨가기
 
Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014
 
mongodb와 mysql의 CRUD 연산의 성능 비교
mongodb와 mysql의 CRUD 연산의 성능 비교mongodb와 mysql의 CRUD 연산의 성능 비교
mongodb와 mysql의 CRUD 연산의 성능 비교
 
[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp
 
[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트
[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트
[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트
 
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
 
Lablupconf session7 People don't know what they want until LABLUP show it to ...
Lablupconf session7 People don't know what they want until LABLUP show it to ...Lablupconf session7 People don't know what they want until LABLUP show it to ...
Lablupconf session7 People don't know what they want until LABLUP show it to ...
 
Ai based on gpu
Ai based on gpuAi based on gpu
Ai based on gpu
 
[232] 수퍼컴퓨팅과 데이터 어낼리틱스
[232] 수퍼컴퓨팅과 데이터 어낼리틱스[232] 수퍼컴퓨팅과 데이터 어낼리틱스
[232] 수퍼컴퓨팅과 데이터 어낼리틱스
 
빅데이터 윈윈 컨퍼런스-장비지원 사례연구
빅데이터 윈윈 컨퍼런스-장비지원 사례연구빅데이터 윈윈 컨퍼런스-장비지원 사례연구
빅데이터 윈윈 컨퍼런스-장비지원 사례연구
 

More from Seok-joon Yun

Retrospective.2020 03
Retrospective.2020 03Retrospective.2020 03
Retrospective.2020 03Seok-joon Yun
 
AWS DEV DAY SEOUL 2017 Buliding Serverless Web App - 직방 Image Converter
AWS DEV DAY SEOUL 2017 Buliding Serverless Web App - 직방 Image ConverterAWS DEV DAY SEOUL 2017 Buliding Serverless Web App - 직방 Image Converter
AWS DEV DAY SEOUL 2017 Buliding Serverless Web App - 직방 Image ConverterSeok-joon Yun
 
아파트 시세,어쩌다 머신러닝까지
아파트 시세,어쩌다 머신러닝까지아파트 시세,어쩌다 머신러닝까지
아파트 시세,어쩌다 머신러닝까지Seok-joon Yun
 
Pro typescript.ch07.Exception, Memory, Performance
Pro typescript.ch07.Exception, Memory, PerformancePro typescript.ch07.Exception, Memory, Performance
Pro typescript.ch07.Exception, Memory, PerformanceSeok-joon Yun
 
Doing math with python.ch07
Doing math with python.ch07Doing math with python.ch07
Doing math with python.ch07Seok-joon Yun
 
Doing math with python.ch06
Doing math with python.ch06Doing math with python.ch06
Doing math with python.ch06Seok-joon Yun
 
Doing math with python.ch05
Doing math with python.ch05Doing math with python.ch05
Doing math with python.ch05Seok-joon Yun
 
Doing math with python.ch04
Doing math with python.ch04Doing math with python.ch04
Doing math with python.ch04Seok-joon Yun
 
Doing math with python.ch03
Doing math with python.ch03Doing math with python.ch03
Doing math with python.ch03Seok-joon Yun
 
Doing mathwithpython.ch02
Doing mathwithpython.ch02Doing mathwithpython.ch02
Doing mathwithpython.ch02Seok-joon Yun
 
Doing math with python.ch01
Doing math with python.ch01Doing math with python.ch01
Doing math with python.ch01Seok-joon Yun
 
Pro typescript.ch03.Object Orientation in TypeScript
Pro typescript.ch03.Object Orientation in TypeScriptPro typescript.ch03.Object Orientation in TypeScript
Pro typescript.ch03.Object Orientation in TypeScriptSeok-joon Yun
 
C++ Concurrency in Action 9-2 Interrupting threads
C++ Concurrency in Action 9-2 Interrupting threadsC++ Concurrency in Action 9-2 Interrupting threads
C++ Concurrency in Action 9-2 Interrupting threadsSeok-joon Yun
 
Welcome to Modern C++
Welcome to Modern C++Welcome to Modern C++
Welcome to Modern C++Seok-joon Yun
 
[2015-07-20-윤석준] Oracle 성능 관리 2
[2015-07-20-윤석준] Oracle 성능 관리 2[2015-07-20-윤석준] Oracle 성능 관리 2
[2015-07-20-윤석준] Oracle 성능 관리 2Seok-joon Yun
 
[2015-07-10-윤석준] Oracle 성능 관리 & v$sysstat
[2015-07-10-윤석준] Oracle 성능 관리 & v$sysstat[2015-07-10-윤석준] Oracle 성능 관리 & v$sysstat
[2015-07-10-윤석준] Oracle 성능 관리 & v$sysstatSeok-joon Yun
 
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4Seok-joon Yun
 

More from Seok-joon Yun (20)

Retrospective.2020 03
Retrospective.2020 03Retrospective.2020 03
Retrospective.2020 03
 
Sprint & Jira
Sprint & JiraSprint & Jira
Sprint & Jira
 
Eks.introduce.v2
Eks.introduce.v2Eks.introduce.v2
Eks.introduce.v2
 
Eks.introduce
Eks.introduceEks.introduce
Eks.introduce
 
AWS DEV DAY SEOUL 2017 Buliding Serverless Web App - 직방 Image Converter
AWS DEV DAY SEOUL 2017 Buliding Serverless Web App - 직방 Image ConverterAWS DEV DAY SEOUL 2017 Buliding Serverless Web App - 직방 Image Converter
AWS DEV DAY SEOUL 2017 Buliding Serverless Web App - 직방 Image Converter
 
아파트 시세,어쩌다 머신러닝까지
아파트 시세,어쩌다 머신러닝까지아파트 시세,어쩌다 머신러닝까지
아파트 시세,어쩌다 머신러닝까지
 
Pro typescript.ch07.Exception, Memory, Performance
Pro typescript.ch07.Exception, Memory, PerformancePro typescript.ch07.Exception, Memory, Performance
Pro typescript.ch07.Exception, Memory, Performance
 
Doing math with python.ch07
Doing math with python.ch07Doing math with python.ch07
Doing math with python.ch07
 
Doing math with python.ch06
Doing math with python.ch06Doing math with python.ch06
Doing math with python.ch06
 
Doing math with python.ch05
Doing math with python.ch05Doing math with python.ch05
Doing math with python.ch05
 
Doing math with python.ch04
Doing math with python.ch04Doing math with python.ch04
Doing math with python.ch04
 
Doing math with python.ch03
Doing math with python.ch03Doing math with python.ch03
Doing math with python.ch03
 
Doing mathwithpython.ch02
Doing mathwithpython.ch02Doing mathwithpython.ch02
Doing mathwithpython.ch02
 
Doing math with python.ch01
Doing math with python.ch01Doing math with python.ch01
Doing math with python.ch01
 
Pro typescript.ch03.Object Orientation in TypeScript
Pro typescript.ch03.Object Orientation in TypeScriptPro typescript.ch03.Object Orientation in TypeScript
Pro typescript.ch03.Object Orientation in TypeScript
 
C++ Concurrency in Action 9-2 Interrupting threads
C++ Concurrency in Action 9-2 Interrupting threadsC++ Concurrency in Action 9-2 Interrupting threads
C++ Concurrency in Action 9-2 Interrupting threads
 
Welcome to Modern C++
Welcome to Modern C++Welcome to Modern C++
Welcome to Modern C++
 
[2015-07-20-윤석준] Oracle 성능 관리 2
[2015-07-20-윤석준] Oracle 성능 관리 2[2015-07-20-윤석준] Oracle 성능 관리 2
[2015-07-20-윤석준] Oracle 성능 관리 2
 
[2015-07-10-윤석준] Oracle 성능 관리 & v$sysstat
[2015-07-10-윤석준] Oracle 성능 관리 & v$sysstat[2015-07-10-윤석준] Oracle 성능 관리 & v$sysstat
[2015-07-10-윤석준] Oracle 성능 관리 & v$sysstat
 
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
 

병렬프로그래밍과 Cuda

  • 1. 병렬 프로그래밍과 CUDA icysword@nate.com Parallel Programming & CUDA 윤 석준 책임연구원
  • 2. 2014-04-23 2 윤석준 (icysword@nate.com) 이 발표에서 다루는 것 1. 병렬 프로그래밍의 이해 2. 병렬 프로그래밍 기법 2.1. Core 내부 병렬 프로그래밍 2.2. Thread 병렬 프로그래밍 2.3. Process 병렬 프로그래밍 2.4. GPGPU를 이용한 병렬 프로그래밍 3. CUDA 란 ? 4. CUDA 적용 사례 5. 최근 병렬화 이슈 6. 질의 및 응답
  • 3. 2014-04-23 3 윤석준 (icysword@nate.com) Moore의 법칙 마이크로칩의 처리 능력이 18개월마다 2배로 늘어난다 CO-FOUNDER, INTEL Intel Core i3 / i5 / i7 2010년 1월 Clarkdale 기준 - i3 : 3.3 GHz - i5 : 3.6 GHz - i7 : 3.2 GHz 2014년 2월 현재 Haswell 기준 - i3 : 2.4 GHz - i5 : 2.9 GHz - i7 : 3.3 GHz
  • 4. 2014-04-23 4 윤석준 (icysword@nate.com) Multicore Processor i7 i5 i3 Cores 4 4 2 Threads 8 4 4
  • 5. 2014-04-23 5 윤석준 (icysword@nate.com) 병렬 프로그래밍 𝒌 𝟏𝟎𝟎𝟎𝟎 𝑘=0 병렬처리가 가능한 경우 - 서로 영향을 미치지 않는 작업들 𝒌 𝟏𝟎𝟎𝟎 𝑘=0 𝒌 𝟐𝟎𝟎𝟎 𝑘=𝟏𝟎𝟎𝟏 𝒌 𝟏𝟎𝟎𝟎𝟎 𝑘=𝟗𝟎𝟎𝟏 … + 병렬처리가 불가능한 경우 - Loop에서 앞의 계산값이 필요한 경우 피보나치 수열(Fibonacci Sequence)
  • 6. 2014-04-23 6 윤석준 (icysword@nate.com) 병렬 프로그래밍 기법 ① Core 내부 병렬 프로그래밍 ② Thread 병렬 프로그래밍 ③ Process 병렬 프로그래밍 ④ GPGPU를 이용한 병렬 프로그래밍
  • 7. 2014-04-23 7 윤석준 (icysword@nate.com) Core 내부 병렬 프로그램 SIMD (Single Instruction Multiple Data) int a = 1 + 2; int b = 3 + 4; int c = 5 + 6; int d = 7 + 8; SISD 1 2a = + 3 4b = + 5 6c = + 7 8d = + SIMD 1 3 5 7 2 4 6 8= +a b c d • 기본적인 사칙 연산만 가능 • 별도의 Memory 할당 필요 • 제한된 Registor 개수
  • 8. 2014-04-23 8 윤석준 (icysword@nate.com) Thread 병렬 프로그램 • OpenMP • pthreads • Parallel Pattern Library • 멀티스레딩 프로그램 Loop 병렬화 Section 병렬화
  • 9. 2014-04-23 9 윤석준 (icysword@nate.com) Process 병렬 프로그램 • MPI • HPF • PVM
  • 10. 2014-04-23 10 윤석준 (icysword@nate.com) GPGPU 병렬 프로그램
  • 11. 2014-04-23 11 윤석준 (icysword@nate.com) GPGPU 병렬 프로그램 Floating-Point Operations per Second for the CPU and GPU ● GTX 770 : 3.2 Tera FLOPs ● i7 : 141 Giga FLOPs 22.6배
  • 12. 2014-04-23 12 윤석준 (icysword@nate.com) GPGPU 병렬 프로그램 Memory Bandwidth for the CPU and GPU ● GTX 770 : 224.3 GB/s ● i7 : 25.6 GB/s 8.8배
  • 13. 2014-04-23 13 윤석준 (icysword@nate.com) CUDA란 ? (Compute Unified Device Architecture) • 2006년 11월 GeForce 8800 GTX 이후 생산되는 GPU • Geforce : 일반적인 Graphic Card • Quadro : 고성능의 Graphic 작업 전용 • Tesla : Graphic 기능 없이 고성능 연산 전용
  • 14. 2014-04-23 14 윤석준 (icysword@nate.com) CPU vs GPU The GPU Devotes More Transistors to Data Processing
  • 15. 2014-04-23 15 윤석준 (icysword@nate.com) CUDA Hardware Archetecture • SM (Streaming Multiprocessor) • CUDA Core (Streaming Processor)
  • 16. 2014-04-23 16 윤석준 (icysword@nate.com) CUDA Data Parallel Threading Model • Block : 작업단위 (SM) • Warp : SM 내에서 동시 실행 가능한 Thread 개수 • Grid : Block 의 집합 • Thread : Block 안에서의 병렬화 (CUDA Core)
  • 17. 2014-04-23 17 윤석준 (icysword@nate.com) Structure of CUDA Memory • Registor - On Chip Processor 에 있는 Memory - 함수내의 Local 변수 (배열은 Global) - 가장 빠른 메모리 • Shared Memory - On Chip Processor 에 있는 Memory - SM 내의 Thread 들이 공유 - L1 캐시급 속도 • Constant Memory - 읽기전용 캐시 - Write (from DRAM) : 400 ~ 600 Cycles - Read : Registor와 동급 • Global Memory - Video Card에 장착된 DRAM - Read/Write : 400 ~ 600 Cycles • Texture Memory - 캐시 읽기를 지원하는 Global Memory - 설정 후 읽기전용 Register Shared Memory Constant Memory Global Memory Texture Memory
  • 18. 2014-04-23 18 윤석준 (icysword@nate.com) CUDA Streaming • 연산 속도에 비해 Host DRAM 과 GPU DRAM의 Data 전송속도가 느림 • 큰 Data를 가공할 경우 연산시간보다 Data 전송시간의 비중이 더 커짐 • Data 전송 및 연산시간을 작은 단위로 나눠서 순차적으로 진행
  • 19. 2014-04-23 19 윤석준 (icysword@nate.com) CUDA Library • cuRAND : 랜덤수 생성기 (CUDA Random Number Generation library) • CUFFT : FFT 연산 Library (CUDA Fast Fourier Transform library) • CUBLAS : 선형대수학 연산 Library (CUDA Basic Linear Algebra Subroutines library)
  • 20. 2014-04-23 20 윤석준 (icysword@nate.com) CUDA Programming 예제 float fResult[1024][1000]; float fData[1024][1000]; for (int i = 0; i < 1024; i++) { for (int j = 0; j < 1000; j++) { for (int k = 0; k < 33; k++) { fResult[i][j] += Calc(fData[i][j], k); } } } int main() { … float *dev_fResult, *dev_fData; int iSizeData = 1024 * 1000 * sizeof(float); cudaMalloc((void**)&dev_fResult, iSizeData); cudaMemset(dev_fResult, 0, iSizeData); cudaMalloc((void**)&dev_fData, iSizeData); cudaMemcpy(dev_fData, fData, iSizeData, cudaMemcpyHostToDevice); KernelFunc<<<1024, 1000>>>(dev_fResult, dev_fData); float* fResult = new float[1024 * 1000]; cudaMemcpy(fResult, dev_fResult, iSizeData, cudaMemcpyDeviceToHost); cudaFree(dev_fResult); cudaFree(dev_fData); … } // 커널함수 : CPU에 의해 호출되어 // GPU에서 실행 // Device 함수 : GPU에서 실행 // Host 함수 : CPU에서 실행 // Atomic 연산 : Mutal Exclusion // Device 메모리 할당 // Kernel 함수 호출 // Host 메모리 할당 __global__ void KernelFunc(float* i_fResult, float* i_fData) { float fResult = 0.0f; int index = blockIdx.x * gridDim + threadIdx.x; float fData = i_fData[index]; for (int k = 0; k < 33; k++) { fResult += Calc(fData, k); } i_fResult[index] = fResult; }
  • 21. 2014-04-23 21 윤석준 (icysword@nate.com) CUDA Compute capability (version) http://en.wikipedia.org/wiki/CUDA . . . Technical specifications Compute capability (version) 1 1.1 1.2 1.3 2.x 3 3.5 5 8800 GTX 8400M GT GTS 350M GTX 280 GTX 550 GTX 770 GTX TITAN GTX 750 Maximum dimensionality of grid of thread blocks 2 3 Maximum x-, y-, or z-dimension of a grid of thread blocks 65535 231 -1 Maximum dimensionality of thread block 3 Maximum x- or y-dimension of a block 512 1024 Maximum z-dimension of a block 64 Maximum number of threads per block 512 1024 Warp size 32 Maximum number of resident blocks per multiprocessor 8 16 32 Maximum number of resident warps per multiprocessor 24 32 48 64 Maximum number of resident threads per multiprocessor 768 1024 1536 2048 Number of 32-bit registers per multiprocessor 8 K 16 K 32 K 64 K Maximum number of 32-bit registers per thread 128 63 255 Maximum amount of shared memory per multiprocessor 16 KB 48 KB 64 KB
  • 22. 2014-04-23 22 윤석준 (icysword@nate.com) CUDA 6.0 : Unified Memory http://devblogs.nvidia.com/parallelforall/unified-memory-in-cuda-6
  • 23. 2014-04-23 23 윤석준 (icysword@nate.com) CUDA 적용 사례 : 성공 1 • Beam Pattern 생성 - 1000 방위 x 1000 주파수Bin - 100개 Sensor ( 각 방위별 BeamPattern 생성) - Data 전달 없음 CPU : 32 s (OpenMP) CUDA : 0.26 s 123배
  • 24. 2014-04-23 24 윤석준 (icysword@nate.com) CUDA 적용 사례 : 성공 2 • 타겟 신호 에 Beam Pattern 적용 - 192 방위 x 1000 주파수Bin - 16타겟 - Data Read/Write : 192 x 1000 x floatComplex x 2 (LOFAR/DEMON) CPU : 900 ms (OpenMP) CUDA : 14 ms 64배
  • 25. 2014-04-23 25 윤석준 (icysword@nate.com) CUDA 적용 사례 : 실패 • Cubic Spline Interoplation CPU 연산에 비하여 성능 향상이 없음 … Xi(14) Xi(15) Xi(16) … Xo(n) Xo(n+1) - 입력 된 각각의 점들에 대하여 사용될 각종 변수들 계산 : Sequential Operation - 출력값 연산 : 병렬화 가능은 하나 해당 위치를 찾을 시 Sequential에 비해 검색 시간이 느림
  • 26. 2014-04-23 26 윤석준 (icysword@nate.com) 최근 병렬화 이슈 • Raspberry-Pi - 700 Mhz ARM11 CPU - Broadcom Videocore IV GPU - 256 Mbytes RAM - 10.13 GFLOPs - i7 : 141 GFLOPs - 슈퍼컴퓨터 ‘천둥’ : 107 TFLOPs http://www.raspberrypi.org
  • 27. 2014-04-23 27 윤석준 (icysword@nate.com) 최근 병렬화 이슈 • Multi-GPU Motherboard http://prod.danawa.com/info/?pcode=2466508&cate1=861&cate2=875&cate3=968&cate4=0