본문 바로가기

출간 도서 소개

9. 머신러닝과 블록체인을 떠받치는 GPU의 모든 기술

 

 

 

[제목] 머신러닝과 블록체인을 떠받치는 GPU의 모든 기술

[원제] GPUを支える技術

저자: Hisa Ando
역자: 길양이
출판사: 남가람북스
발행일: 2018-04-14
ISBN: 979-11-954845-8-4
가격: 30000
페이지: 344 
판형: 182*232*16

[상세 페이지]

[저자 소개]
1990년대 실리콘밸리에서 첨단 프로세서 개발에 종사했으며, 지금은 공학박사이자 프리랜서 테크니컬 라이터로, 프로세서나 슈퍼컴퓨터 관련 보도 및 해설을 중심으로 활약하고 있다. 《컴퓨터 설계의 기초》(마이나비출판, 2010), 《프로세서를 떠받치는 기술》(기술평론사, 2011) 등 컴퓨터 아키텍처 관련 도서 6권의 저자다. 또한, 블로그(http://www.geocities.jp/andosprocinfo/)에서 프로세서와 관련한 다양한 주제를 다룬다.


[책 소개]
이 책은 GPU의 기본 구조와 기술 동향에 초점을 맞춘 해설서입니다. 3D 그래픽, 게임, 모바일, VR/AR, 과학 기술 계산, 그리고 인공지능/딥러닝에 이르기까지 폭넓은 분야에서 GPU/병렬 계산의 중요도는 계속 높아지고 있습니다. 그 배경이 되는 하드웨어와 계산 처리에 대해서는 어떤 요구가 있을까요?
이 책에서는 현시점에서 GPU의 하드웨어와 소프트웨어 관점에서 바라본 기본 사항, 대량 병렬처리의 근간, 중요 기술 동향까지 자세하게 설명합니다. 이와 함께 실제 첨단 제품의 예, 각 분야에서 구체적인 도입 사례를 풍부하게 싣는 등 현장에서 활용되는 기술 지식을 응축하여 전달해 드립니다.

이런 분에게 추천합니다.
* GPU가 어떻게 되어 있는지 궁금한 분
* GPU의 구조를 알고 더 고성능의 프로그램을 작성하고 싶은 분
* GPU의 구조와 현재의 사용 방법을 이해하고 더 좋은 사용 방법, 새로운 사용 방법을 고민해보고자 하는 분
* 지적 호기심에서 GPU가 어떤 것인지를 알고 싶은 분

이 책을 읽는 데 필요한 전제 지식은 그리 많지 않습니다. 다음과 같은 기초 지식이 있다면 좀 더 읽기 편할 것입니다.
* 명령어 페치(Fetch)부터 연산에 이르는 프로세서 동작 원리
* 기초적인 C 언어 지식
* 대량 병렬 처리를 수행할 때의 문제점


[출판사 리뷰]
이 책은 GPU 설명서입니다. 스마트폰 등의 화려한 화면을 만드는 것이 GPU이므로 GPU는 우리 생활과 가장 가까운 프로세서라고 할 수 있습니다. 이 책에서는 그래픽 화면 표시가 어떻게 이루어지는지, 그래픽 표시용의 GPU는 종래의 CPU와 어떻게 다른지부터 설명합니다.

이 책에서는 GPU가 어떤 구조로 되어 있는지, 왜 CPU보다 수치 계산 성능이 훨씬 높은지를 특히 자세하게 설명합니다. 기본적으로 GPU는 많은 연산장치를 탑재하여 병렬로 계산을 수행함으로써 높은 계산 성능을 구현합니다. 하지만, 많은 연산장치가 있어도 그것을 효과적으로 사용하는 프로그램이 아니라면 높은 성능은 실현되지 않습니다. 이 책에서는 GPU로 실행하는 고수준 병렬 프로그램을 작성할 수 있는 CUDA나 OpenCL 등의 언어나 이들 언어를 사용한 고성능의 프로그램 작성 방법은 설명하지 않습니다.


[목차]

이 책에 대하여 
이 책의 구성 
이 책의 대상 독자와 필요한 전제 지식에 관해

Chapter 1 [입문] 프로세서와 GPU
 
1.1 컴퓨터 시스템과 이미지 표시의 기초
프레임 버퍼, VRAM, 디스플레이 인터페이스

__ 컴퓨터로 이미지를 표시하는 원리 
__ 이미지를 표시하는 디스플레이 브라운관과 래스터 주사 
__ 액정 디스플레이 - 액정 셀, 픽셀, dpi 
__ 프레임 버퍼와 디스플레이 인터페이스 

1.2 3D 그래픽의 역사
문자에서 그림, 2D, 3D로. 고품질과 실시간 

__ 초기 그래픽 
__ 컴퓨터 그래픽 이용 확대 - 고품질 이미지, 실시간 그리기 
__ 3차원 물체의 모델링과 표시 

1.3 3D 모델 만들기
패널, 좌표, 배치, 빛 

__ 종이 등 모델링 만들기 - 패널, 지역 좌표와 전역 좌표 
__ 행렬을 적용하여 위치나 방향을 바꾸어 배치 - 모델링 변환, 시점 변환, 모델링 뷰 변환, 트랜스포즈 
__ 빛의 반사 계산 - 라이팅 

1.4 CPU와 GPU의 차이
프로세서도 적재적소에 

__ GPU는 병렬 처리로 높은 성능을 실현 - 수십~수천 개의 연산기, GDDR DRAM 
__ GPU의 출현 
__ GPU 컴퓨팅의 출현 - 부동소수점 연산으로 넓어진 활약 장소 
__ GPU는 대량 병렬 프로세서 - 데스크톱 PC를 위한 CPU와 게임을 위한 GPU 비교 
__ GPU는 병렬 처리에서 높은 성능 발휘 
__ CPU와 GPU의 이종 시스템과 그에 따른 문제 

1.5 사용자 가까이에 있는 다양한 GPU
SoC, CPU 칩 내장, Discrete GPU  

__ 휴대전화용 GPU - 스마트폰이나 태블릿용 SoC 탑재 
__ CPU 칩에 내장된 GPU - Intel Core 시리즈, AMD APU 
__ Discrete GPU와 그래픽 워크스테이션 - 소비전력 200W를 넘는 범위에서 최고의 성능을 원하는 사용자 

1.6 GPU와 주된 처리 방식
메모리 공간, 그릴 때의 GPU 메모리 확보 방식, 병렬 처리 

__ 공통 메모리 공간인가 별도 메모리 공간인가? 
__ 풀 버퍼 방식인가, 타일링 방식인가? - 그릴 때의 GPU 메모리 확보 방식 
__ SIMD 방식인가, SIMT 방식인가? - 좌표와 픽셀 색 4요소를 하나로 묶어 다루기 

1.7 정리

Chapter 2 GPU와 계산 처리의 변천
 
2.1 그래픽과 가속기의 역사
게임기, PC 그래픽 

__그래픽 처리 하드웨어의 역사 - 게임, 하이엔드 시뮬레이터, 과학 기술 계산 
__ 아케이드 게임기 
__ 가정용 게임기 
__ 그래픽 

2.2 그래픽 보드 기술
2D 배경+스프라이트, BitBLT, 2D/2.5D/3D 그래픽 가속기 

__ 2D 배경+스프라이트 
__ BitBLT 
__ 2D 그래픽 가속기 
__ 3D 그래픽 가속기 

2.3 과학 기술 계산에 GPU 응용
유니파이드 셰이더, 배정도 부동소수점 연산, 프로그래밍 환경 

__ 유니파이드 셰이더 
__ GPU를 이용한 과학 기술 계산 - G80 아키텍처 
__ 과학 기술 계산은 32비트로는 정밀도 부족 - GT200 아키텍처, GF100 Fermi GPU 
__ CUDA 프로그래밍 환경 
__ 오류 검출과 수정 

2.4 병렬 처리 패러다임
기본, MIMD/SIMD/SIMT의 차이 

__ GPU 좌표 변환 계산을 병렬화함 - 병렬 계산을 위한 기초 지식 
__ MIMD형 프로세서 
__ SIMD형 프로세서 
__ SIMD 실행 문제 
__ SIMT 실행
 
2.5 정리

Chapter 3 [기초 지식] GPU와 계산 처리 

3.1 3D 그래픽의 기본
OpenGL의 렌더링 파이프라인을 예로 들어 

__ [기초 지식] OpenGL의 렌더링 파이프라인 
__ 프래그먼트 셰이더 - 프래그먼트의 색과 깊이 방향의 위치를 계산 
__ 샘플마다 연산 - 렌더링 파이프라인의 마지막 

3.2 그래픽 처리를 수행하는 하드웨어의 구조
Intel HD Graphics Gen 9 GPU의 예 

__ Intel HD Graphics Gen 9 GPU 코어 - 강력한 GPU를 탑재한 PC용 프로세서 

3.3 [스피드 학습] 게임 그래픽과 GPU
하드웨어와 소프트웨어, 그 진화의 궤적 - 특별 기고: 니시카와 젠지(西川 善司) 

__ [하드웨어 분야의 진화] 첨단 3D 게임 그래픽은 아케이드부터 - 고유의 시스템, 고유의 3D 그래픽 
__ PlayStation과 세가 새턴이 불러온 3D 게임 그래픽 데모크라시 - PC 3D 그래픽의 여명기 
__ DirectX 7 시대 - 진정한 의미의 ‘GPU’가 등장하기 시작 
__ 프로그래밍 가능 셰이더 시대의 개막 - Shader Model (SM) 사양 
__ [소프트웨어 분야의 진화] 근대 게임 그래픽의 ‘3개의 신기’ - 표현 요소로 보는 근대 게임 그래픽 
__ [빛 표현] 법선 매핑 - HD 게임 그래픽 시대에 이르러 요구된 하이 디테일 표현 
__ [그림자 표현] 최신 GPU도 그림자 자동 생성 메커니즘은 탑재하지 않음 
__ [현재 주류인 그림자 표현] 깊이 그림자 기법 - 다양한 그림자를 만들 수 있게 됨 
__ HDR 렌더링 - 현실 세계의 휘도를 가능한 한 정확히 표현하려면 
__ HDR 렌더링이 가져온 3가지 효능 

3.4 과학 기술 계산과 GPU
높은 연산 성능으로 용도가 확장됨
 
__ 과학 기술 계산의 대상은 범위가 무척 넓음 
__ 과학 기술 계산과 부동소수점 연산 - 극단적으로 큰 수와 극단적으로 작은 수를 동시에 다루려면 
__ 부동소수점 연산의 정밀도 사용 구분 - 그래픽, 스마트폰, 과학 기술 계산 

3.5 병렬 계산 처리
프로세서의 코어 수 증가와 계산/프로그램의 관계 

__ GPU의 데이터 병렬과 스레드 병렬 
__ 3D 그래픽의 병렬성 - 정점 좌표 변환, 픽셀 셰이딩 
__ 과학 기술 계산의 병렬 계산 - 병렬화를 어떻게 활용할 것인가? 

3.6 GPU 관련 하드웨어
메모리 용량, 대역폭, CPU와의 연결, 오류와 대책 

__ 장치 메모리 관련 기초 지식 
__ CPU와 GPU의 연결 
__ 전자 회로의 오류 구조와 대책 

3.7 정리

Chapter 4
[상세] GPU의 대량 병렬 처리 

4.1 GPU의 병렬 처리 방식
SIMD와 SIMT 

__ SIMD 방식 - 4개의 좌표 값을 묶어 하나의 데이터로 취급 
__ SIMT 방식 - 하나씩 계산 

4.2 GPU 구조
NVIDIA Pascal GPU 

__ NVIDIA Pascal GPU 기초 지식 
__ NVIDIA GPU의 명령 실행 구조 - [하드웨어 관점] 프로그램의 구조와 실행 
__ 여러 개의 스레드 실행 
__ SM 실행 유닛 
__ GPU의 메모리 시스템 - 연산기에 직접 연결한 고속 최상위 기억 레지스터 파일부터 
__ 워프 스케줄러 - 연산 대기 시간을 숨김 
__ 프레디케이트 실행 - 조건 분기 실현 

4.3 AMD와 ARM의 SIMT 방식 GPU
AMD GCN 아키텍처와 ARM Bifrost GPU 

__ AMD GCN 아키텍처 GPU 
__ 스마트폰용 SoC 
__ ARM Bifrost GPU
 
4.4 GPU 사용성을 개선한 최근의 기술
유니파이드 메모리, SSG, 세밀도 프리엠프션 

__ 유니파이드 메모리 주소  
__ NVIDIA Pascal GPU의 유니파이드 메모리 
__ AMD Polaris GPU의 SSG 
__ 세밀도 프리엠프션 - 명령이 끝날 때 처리를 바꿈 

4.5 오류 검출과 수정
과학 기술 계산 용도에서는 필수인 기능 

__ 과학 기술 계산의 계산 결과와 오류 
__ 오류 검출과 수정의 기본 원리 
__ 패리티 체크 
__ ECC - 허밍 부호 
__ 강력한 오류 검출 능력이 있는 CRC 
__ 장치 메모리 ECC 문제 

4.6 정리

Chapter 5 GPU 프로그래밍의 기본 

5.1 GPU 호환성의 사고방식
완전한 상위 호환은 어려운 상황 

__ 하드웨어 호환성, 기계어 명령 수준의 호환성 
__ NVIDIA의 추상화 어셈블러 PTX 
__ GPU 언어 수준의 호환성 - CUDA와 OpenCL 

5.2 CUDA
NVIDIA의 GPU 프로그래밍 환경

__ CUDA의 C 언어 확장
__ CUDA 프로그램에서 사용하는 변수 - 벡터형 변수 지원 
__ 장치 메모리의 할당/해제와 호스트 메모리와의 데이터 전송 
__ [간단한 예] 행렬 합을 계산하는 CUDA 프로그램 
__ CUDA의 수학 라이브러리 
__ NVIDIA GPU의 계산 능력 
__ CUDA 프로그램의 실행 제어 
__ CUDA의 다이내믹 패러렐리즘 
__ CUDA의 유니파이드 메모리 
__ 여러 개의 GPU 시스템 제어 

5.3 OpenCL
업계 표준 GPU 계산 언어 

__ OpenCL이란? 
__ OpenCL의 변수 
__ OpenCL의 실행 환경 
__ 커널 실행 
__ OpenCL의 메모리 
__ OpenCL 프로그램 예 

5.4 GPU 프로그램 최적화
성능 이끌어내기 

__ NVIDIA GPU의 그리드 실행 
__ 메모리 액세스 효율화 
__ 더블 버퍼를 사용하여 통신과 계산을 겹침 

5.5 OpenMP와 OpenACC
지시자를 이용한 GPU 프로그래밍

__ OpenMP와 OpenACC의 기초 지식 
__ NVIDIA가 힘을 쏟는 OpenACC 
__ OpenMP를 사용한 병렬화 
__ OpenACC와 OpenMP4 

5.6 정리

Chapter 6 GPU 주변 기술 

6.1 GPU의 장치 메모리
대량 데이터를 고속으로 공급 

__ DRAM 

6.2 CPU와 GPU 사이의 데이터 전송
PCI Express 관련 기술, NVLink, CAPI 

__ PCI Express 
__ NVIDIA의 NVLink 
__ IBM의 CAPI 
__ AMD의 SSD 탑재 GPU - 빅데이터 처리에 위력을 발휘할 가능성 

6.3 정리

Chapter 7 GPU 활용의 최전선 

7.1 딥러닝과 GPU
신경망의 기본부터 활용 예까지 

__ 딥러닝에 사용되는 신경망 
__ 딥러닝에 필요한 계산과 GPU 
__ 커스텀 ASIC이나 FPGA를 이용한 딥러닝 - 강력한 경쟁자 
__ 딥러닝에서의 GPU 활용 사례 

7.2 3D 그래픽과 GPU
다양한 3D 사례 

__ NVIDIA의 GRID 

7.3 슈퍼컴퓨터와 GPU
높은 연산 성능을 추구

__ 세계 상위 15위까지의 슈퍼컴퓨터 상황 
__ 츠쿠바대학의 HA-PACS/TCA 슈퍼컴퓨터 
__ 슈퍼컴퓨터는 어디에 사용하는가?

7.4 정리

Chapter 8 프로세서와 GPU 기술 동향 

8.1 CPU는 어떻게 될 것인가?
스마트폰 SoC용, 데이터센터용 CPU 

__ 스마트폰 SoC용 CPU 
__ 데이터센터용 CPU 
__ 고성능 CPU 기술 동향 

8.2 GPU는 어떻게 될 것인가?
GPU의 종류와 미래 

__ GPU 종류 
__ 스마트폰 GPU는 어떻게 될 것인가? 
__ 하이엔드 GPU는 어떻게 될 것인가? 
__ Knights Landing - CPU와 가속기 일체화 
__ PEZY-SC - 일본발 매니 코어 CPU 

8.3 소비전력 절감
아키텍처 혹은 회로 기술로 해결 

__ 아키텍처에 의한 전력 절약 설계 - 커스텀 로직, 동영상, 딥러닝 
__ 회로 기술에 의한 전력 절약 

8.4 딥러닝 지원
AI에의 도전 

_ 딥러닝 처리 엔진 - 16비트 반정도 부동소수점 연산과 8비트 고정소수점 연산 기능 

8.5 정리

찾아보기