Microsoft PowerPoint - AMP_ pptx

Similar documents
<4D F736F F F696E74202D20BAB4B7C4C7C1B7CEB1D7B7A1B9D6BCBCB9CCB3AA5F F FB0EDC7FCC8A32E >

목차 병렬프로그래밍이해및 TBB 기초 TBB 글로벌사례및국내동향 TBB 실무적용 TIPS

K&R2 Reference Manual 번역본

02 C h a p t e r Java

Windows Embedded Compact 2013 [그림 1]은 Windows CE 로 알려진 Microsoft의 Windows Embedded Compact OS의 history를 보여주고 있다. [표 1] 은 각 Windows CE 버전들의 주요 특징들을 담고

슬라이드 1

Microsoft PowerPoint - CUDA_NeuralNet_정기철_발표자료.pptx

Ⅱ. Embedded GPU 모바일 프로세서의 발전방향은 저전력 고성능 컴퓨팅이다. 이 러한 목표를 달성하기 위해서 모바일 프로세서 기술은 멀티코 어 형태로 발전해 가고 있다. 예를 들어 NVIDIA의 최신 응용프 로세서인 Tegra3의 경우 쿼드코어 ARM Corte

Microsoft PowerPoint - 03_(C_Programming)_(Korean)_Pointers

01이국세_ok.hwp

초보자를 위한 C++

PowerPoint Presentation

CUDA Programming Tutorial 2 - Memory Management – Matrix Transpose

SMISyncW을 활용한 자막 병합

Microsoft PowerPoint - chap01-C언어개요.pptx

Chapter ...

<B1D7B7A1C7C8C4ABB5E5BBE7BEE72E786C7378>

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

PowerPoint 프레젠테이션

비디오 / 그래픽 아답터 네트워크 만약에 ArcGolbe를 사용하는 경우, 추가적인 디스크 공간 필요. ArcGlobe는 캐시파일을 생성하여 사용 24 비트 그래픽 가속기 Oepn GL 2.0 이상을 지원하는 비디오카드 최소 64 MB 이고 256 MB 이상을 메모리

Microsoft PowerPoint - CHAP_03 - 복쇬본.pptx

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

1

초보자를 위한 C# 21일 완성

Microsoft PowerPoint - ch07 - 포인터 pm0415

1 01 [ ] [ ] plus 002

API 매뉴얼

6주차.key

#³óÃÌ°æÁ¦ 64È£-Ä®¶ó¸é

¾Ë±â½¬¿îÀ±¸®°æ¿µc03ÖÁ¾š

¾Èµ¿±³È¸º¸ÃÖÁ¾

Microsoft PowerPoint - 병렬프로그래밍세미나_TBB_ _v1.5.pptx

Microsoft Word - 정병권

(JBE Vol. 20, No. 2, March 2015) (Special Paper) 20 2, (JBE Vol. 20, No. 2, March 2015) ISSN

Part Part

PART

£01¦4Àå-2

½ºÅ丮ÅÚ¸µ3_³»Áö

272*406OSAKAÃÖÁ¾-¼öÁ¤b64ٽÚ

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

C++ Programming

Ä¡¿ì³»ÁöÃÖÁ¾

PowerPoint 프레젠테이션

Microsoft PowerPoint - 권장 사양


4. 1 포인터와 1 차원배열 4. 2 포인터와 2 차원배열 4. 3 포인터배열 4. 4 포인터와문자그리고포인터와문자열

Index

ii 2008 Advanced Micro Devices Inc. 판권 본사 소유. 이 문서의 내용은 Advanced Micro Devices, Inc.( AMD ) 제품과 함께 제공됩니다. AMD 는 이 간행물 내용의 정확 성 또는 완전성에 대해 진술 및 보증을 하지

<4D F736F F F696E74202D DBAB8C1B62CC6AFBCF6BFEBB5B5B1E2BEEFC0E5C4A12CBAB4B7C4C4C4C7BBC5CD2E707074>

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

금오공대 컴퓨터공학전공 강의자료

Microsoft PowerPoint - [2009] 02.pptx

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

PowerPoint 프레젠테이션

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

9¿ù-2Â÷

Contributors: Myung Su Seok and SeokJae Yoo Last Update: 09/25/ Introduction 2015년 8월현재전자기학분야에서가장많이쓰이고있는 simulation software는다음과같은알고리즘을사용하고있다.

슬라이드 1


김기남_ATDC2016_160620_[키노트].key

Microsoft Word - 3부A windows 환경 IVF + visual studio.doc

Microsoft PowerPoint APUE(Intro).ppt

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

2013년 1회 정보처리산업기사 실기.hwp

<C6F7C6AEB6F5B1B3C0E72E687770>

C++ Programming

The C++ Programming Language 4 장타입과선언 4.11 연습문제 Hello,world! 프로그램을실행시킨다. 프로그램이컴파일되지않으면 B3.1 을참고하자. #include<iostream> //#include 문, 헤더파일, 전처리지시

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

Microsoft PowerPoint - eSlim SV [ ]

Figure 5.01

PowerPoint 프레젠테이션

Microsoft PowerPoint - o4.pptx

C 프로그래밊 개요

04_오픈지엘API.key

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

Microsoft PowerPoint Q AMD DT channel training Nov.ppt

목차 006/ 008/ 009/ 011/ 012/ 013/ 014/ Part 1_ 컴퓨터가 제대로 작동하지 않을 때 문제00_ 윈도우7 복구(초기화) 방법 안내 문제01_ 컴퓨터의 전원 버튼을 눌러도 아무 반응이 없어요. 문제02_ 전원을 누르면 팬(쿨러)이 돌아가는

API 매뉴얼


Chap7.PDF

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

PowerPoint Presentation

C프로-3장c03逞풚

\\tsclient\C\Users\User\Deskto...

Microsoft PowerPoint - eSlim SV [080116]

2 병렬성 vs 동시성 시분할 시스템에서 선점형 멀티태스킹 두 개 프로세서 코어에서의 동시 작업

Microsoft Word - PLC제어응용-2차시.doc

분산처리 프레임워크를 활용한대용량 영상 고속분석 시스템

슬라이드 1

[ 마이크로프로세서 1] 1 주차 1 차시. 마이크로프로세서개요 1 주차 1 차시마이크로프로세서개요 학습목표 1. 마이크로프로세서 (Microprocessor) 를설명할수있다. 2. 마이크로컨트롤러를성능에따라분류할수있다. 학습내용 1 : 마이크로프로세서 (Micropr

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

<30312DC2F7BCBCB4EBC4C4C7BBC6C32DBED5BACEBAD B1C731C8A3292E687770>


<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

Microsoft Word - DELL_PowerEdge_TM_ R710 서버 성능분석보고서.doc

로는 Core i7 시리즈가 출시됐다. 네할렘 마이크로아키텍처는 네 이티브 쿼드 코어, 새로운 캐시 계층 구조, 메모리 컨트롤러의 내 장, 기존의 FSB(Front Side Bus)를 대신하는 QPI(QuickPath Interconnect)의 도입, 그리고 하이퍼스레

많이 이용하는 라면,햄버그,과자,탄산음료등은 무서운 병을 유발하고 비만의 원인 식품 이다. 8,등겨에 흘려 보낸 영양을 되 찾을 수 있다. 도정과정에서 등겨에 흘려 보낸 영양 많은 쌀눈과 쌀껍질의 영양을 등겨를 물에 우러나게하여 장시간 물에 담가 두어 영양을 되 찾는다

G5통신3.PDF

슬라이드 1

Transcription:

C++ AMP(Accelerated Massive Parallelism) 2013-03-29 고형호 hyungho.ko@gmail.com http://hhko.tistory.com

목차 Part 1. 다중프로세서 Part 2. 연산자원 Part 3. GPU 특징 Part 4. 병렬화프로그래밍기술 Part 5. AMP Portability( 이식성 ) Part 6. AMP Productivity( 생산성 ) Part 7. AMP Performance( 성능 ) Part 8. 정리 2

Part 1. 다중프로세서 3

직렬 vs. 병행성 vs. 병렬성 스레드 1 스레드 1 스레드 2 스레드 1 스레드 1 A-1 A-1 A-1 B-1 A-2 A-2 A-2 B-2 시간 A-3 B-1 스케줄링 깨어남 B-1 A-3 B-3 B-2 대기 B-2 프로세서 1 프로세서 2 B-3 B-3 프로세서 1 깨어남 A-3 스케줄링 프로세서 1 직렬 (Serial) 병행성 (Concurrency) 병렬성 (Parallelism) 단일프로세서 단일프로세서 다중프로세서 4

프로세서발전사 다중프로세서 단일프로세서 5

Part 2. 연산자원 6

CPU CPU(multi-core, 다중프로세서 ) 자원활용하기 while(true) { } 직렬 Vs. 병렬 parallel_for( { }); 이제 CPU 자원활용은필수다. 7

GPU 연산능력을갖고있는자원은 CPU 뿐인가? GPU(Graphics Processing Unit) 그래픽카드에장착된그래픽연산장치 CPU GPU 8

AMD ATI Radeon HD 5870 SIMD 은 GPU 연산의핵심이다. 9

병렬하드웨어아키텍처분류 Instruction Multiple MISD (Multiple Instruction, Single Data) MIMD (Multiple Instruction, Multiple Data) Single SISD (Single Instruction, Single Data) SIMD (Single Instruction, Multiple Data) Single Multiple Data 10

SISD vs. SIMD 배열 A 배열 B a0 a1 a2 a3 a4 a5 b0 b1 b2 b3 b4 b5 배열 A 와 B 를더하여라! 단일명령으로단일데이터처리 단일명령으로다중데이터처리 사이클 1 a0 + b0 사이클 1 a0 + b0 a1 + b1 a2 + b2 사이클 2 a1 + b1 사이클 2 a3 + b3 a4 + b4 a5 + b5 사이클 3 a2 + b2 사이클 4 a3 + b3 사이클 5 a4 + b4 사이클 6 a5 + b5 SISD (Single Instruction stream, Single Data stream) SIMD (Single Instruction stream, Multiple Data stream) 11

연도 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 CPU 펜티엄 P55C 펜티엄 3 카트마이펜티엄 4 윌라멧펜티엄 4 프레스캇코어2 메롬코어2 펜린코어 i7 네할렘웨스트미어샌디브릿지 SIMD 발전사 CPU 확장명령어셋 벡터처리능력 ( 벡터레지스터수 ) MMX Multi Media extensions 64 비트 SSE Streaming SIMD Extensions 128 비트 SSE 2 SSE 3 SSE 4 AVX Advanced Vector Extensions 256 비트 12

SIMD 예제 for (unsigned int i = 0; i < MAX_SIZE2; i++) { view_c[i] = view_a[i] + view_b[i]; } view_c[i] = view_a[i] + view_b[i]; 00AC121B mov 00AC1220 movdqu 00AC1225 movdqu 00AC1229 lea 00AC122C paddd eax,2625a0h xmm1,xmmword ptr [ecx+edx] xmm0,xmmword ptr [edx] edx,[edx+10h] xmm1,xmm0 이제 SIMD 연산은일반화되고있다. 13

Part 3. GPU 특징 14

CPU Vs. GPU CPU CPU 그래픽카드 GPU 메인보드 Vs. 메인보드 메모리 (DRAM) 입력데이터 출력데이터 메모리 (DRAM) 메모리 (DRAM) 입력데이터 출력데이터 입력데이터 출력데이터 CPU 처리과정 GPU 처리과정 15

GPU 제약사항 1. Recursion 8. goto or labeled statements 2. 'volatile 9. throw, try, catch 3. virtual functions 10. globals or statics 4. pointers to functions 11. dynamic_cast or typeid 5. pointers to member functions 12. asm declarations 6. pointers in structs 13. Varargs 7. pointers to pointers 14. unsupported types e.g. bool, char, short, long double 16

Part 4. 병렬화프로그래밍기술 17

병렬화프로그래밍기술의발전사 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 Chare Kernel Threaded C JSR 166 STAPL ECMA CLI McRT Cilk (MIT) OpenMP 1.0 2.0 C/C++ 버전 Intel Parallell Building Blocks 2.5 TBB 1.0 NVIDIA 2.0 Intel Ct CUDA 1.0 3.0 RapidMind Cilk++ OpenCL 1.0 Microsoft 3.0 ArBB beta Cilk Plus PPL 3.1 4.0 beta end 1.2 4.0 RC1 4.1 Build 2546 5.0 AMP 18

병렬화프로그래밍기술 vs. 병렬성 기술 / 병렬성 벡터처리 루프병렬성 태스크병렬성 자원 OpenMP O O CPU TBB O O CPU ArBB O O CPU Cilk Plus O O O CPU PPL O O CPU CUDA O O GPU OpenCL O O GPU AMP O O GPU 19

Part 5. AMP Portability( 이식성 ) 20

Programming Models & Languages 21

Programming Models & Languages 22

Programming Models & Languages 23

Programming Models & Languages 24

restrict 예약어 double sin(double); double cos(double) restrict(amp); double tan(double) restrict(cpu, amp); // CPU // GPU // CPU, GPU parallel_for_each(av.extent, [=](index<1> idx) restrict(amp) { // sin(data.analge); // non amp restricted function }); cos(data.angle); tan(data.angle); 25

Part 6. AMP Productivity( 생산성 ) 26

Productivity Part of C++ STL-like library for multidimensional data Minimal API Visual Studio integration 27

C++ to AMP #include <amp.h> using namespace concurrency; void AddArrays(int n, int * pa, int * pb, int * pc) { void AddArrays(int n, int * pa, int * pb, int * pc) { array_view<int,1> a(n, pa); array_view<int,1> b(n, pb); array_view<int,1> sum(n, pc); 메모리 } for (int i=0; i<n; i++) { pc[i] = pa[i] + pb[i]; } } parallel_for_each( sum.grid, 병렬처리 [=](index<1> idx) restrict(amp) { sum[idx] = a[idx] + b[idx]; } ); 프로세서 28

AMP Vs. CUDA #include <amp.h> using namespace concurrency; void AddArrays(int n, int * pa, int * pb, int * pc) { array_view<int,1> a(n, pa); array_view<int,1> b(n, pb); array_view<int,1> sum(n, pc); 메모리 #include <cutil_inline.h> cudamemcpy(dev_a, InputA, size*sizeof(int), cudamemcpyhosttodevice); cudamemcpy(dev_b, InputB, size*sizeof(int), cudamemcpyhosttodevice); VectorAdd<<<65535,512>>>(dev_A, dev_b, dev_r); parallel_for_each( sum.grid, 병렬처리 cudamemcpy(result, dev_r, size*sizeof(int), cudamemcpydevicetohost); [=](index<1> idx) restrict(amp) { global void VectorAdd( int*a, int*b, int*c) } sum[idx] = a[idx] + b[idx]; 연산 { int tid = blockidx.x * blockdim.x+ threadidx.x; ); c[tid] = a[tid] + b[tid]; } } 29

Part 7. AMP Performance( 성능 ) 30

Morph 서로다른이미지를자연스럽게변화하는과정이나기법 직렬 CPU 병렬 GPU 병렬 31

Part 8. 정리 32

정리 연산자원 CPU(multi-core) C++ Cilk Plus, TBB, PPL, C# TPL, PLinq GPU(SIMD) C++ AMP, CUDA, 이제 CPU 및 GPU 자원활용은필수다. 33

AMP Vs. CUDA 1. 이식성 (Portability) AMP CUDA AMP 는 성능이요구되는범용클라이언트프로그램에적합 2. 생산성 (Productivity) 또는 AMP CUDA 생산성과유지보수가요구되는서버 / 클라이언트프로그램에적합 3. 성능 (Performance) AMP CUDA CUDA 는 성능이요구되는특화된서버 / 클라이언트프로그램에적합 34

참고자료 1. 프로그래머가몰랐던멀티코어 CPU 이야기, 김민장 2. Heterogeneous Computing and C++ AMP http://channel9.msdn.com/events/amd-fusion-developer-summit/amd- Fusion-Developer-Summit-11/KEYNOTE 3. Welcome to the Jungle http://herbsutter.com/welcome-to-the-jungle/ 35