CUDA 기반 GPU 병렬 처리 프로그래밍 (기초부터 성능 최적화 전략까지)

CUDA 기반 GPU 병렬 처리 프로그래밍 (기초부터 성능 최적화 전략까지)

$25.51
Description
GPGPU 기술과 CUDA로 더 많은 데이터를 더 빠르게!
옥타 코어 CPU의 사용도 놀랍지 않은 시대에 GPGPU는 CPU의 연산을 GPU가 담당하게 하여 더 빠르게 더 많은 양의 데이터를 처리할 수 있도록 합니다. 『CUDA 기반 병렬 처리 프로그래밍』은 엔비디아에서 개발한 GPGPU 아키텍처인 CUDA를 기반으로 다양한 방면에서 속도와 효율의 판도를 뒤집는 병렬 처리에 대해 학습합니다. 또한, 비주얼 스튜디오에서의 CUDA 프로그래밍 방법부터 시작해 병렬 처리 코드를 한 줄씩 살펴보며 컴퓨터 구조 내에서는 세부적으로 어떻게 동작하는지 이미지와 함께 구체적으로 간파합니다.
저자

김덕수

DuksuKim)
-한국기술교육대학교컴퓨터공학과교수,2018~현재
멀티코어프로그래밍과목:K-INNOVATION특수과목(F/L)의우수교과목으로선정,2021
-한국과학기술정보원구원(KISTI)슈퍼컴퓨팅센터선임연구원,2014~2018
-KAIST전산학박사,2014

-CUDA코딩콘테스트자유주제부문(주최:NVIDIA코리아)대상,2010
-CUDA코딩콘테스트자유주제부문(주최:NVIDIA코리아)2위,2015
-한국기술교육대학교최우수교육상(BestTeachingAward),2021

유튜브:https://www.youtube.com/@hpclab.koreatech4592

목차

1장GPGPU및병렬처리개요
_1.1GPGPU와GPU프로그래밍
_1.2병렬처리의개념및필요성
__1.2.1병렬처리의개념
__1.2.2병렬처리의필요성
__1.2.3병렬처리프로그래밍의필요성
_1.3병렬처리하드웨어
__1.3.1플린의분류법
__1.3.2공유메모리시스템과분산메모리시스템
__1.3.3GPU는SIMT구조
_1.4CPU와GPU비교
__1.4.1GPU의탄생배경및발전방향
__1.4.2CPUvs.GPU
_1.5병렬처리의성능
__1.5.1병렬처리성능지표
__1.5.2암달의법칙

2장CUDA개요
_2.1CUDA소개
__2.1.1드라이버API와런타임API
__2.1.2CUDA사용가능GPU
__2.1.3GPU의성능
__2.1.4CUDAcomputecapability
__2.1.5내GPU확인하기
_2.2CUDA개발환경설정
__2.2.1CUDA툴킷설치
__2.2.2CUDA프로그램작성및컴파일환경
_2.3HelloCUDA
__2.3.1호스트와디바이스
__2.3.2CUDA프로그램
__2.3.3HelloCUDA-첫번째CUDA프로그램
__2.3.4CUDAC/C++키워드
__2.3.5커널의실행과실행구성

3장CUDA프로그램의기본흐름
_3.1CUDA프로그램의구조및흐름
_3.2CUDA기초메모리API
__3.2.1디바이스메모리공간할당및초기화API
__3.2.2호스트-디바이스메모리데이터복사API
_3.3CUDA로작성하는벡터의합프로그램
__3.3.1디바이스메모리할당
__3.3.2입력벡터복사(호스트메모리→디바이스메모리)
__3.3.3벡터합커널호출
__3.3.4결과벡터복사(디바이스메모리→호스트메모리)
__3.3.5디바이스메모리해제
__3.3.6CUDA기반벡터합프로그램전체코드
_3.4CUDA알고리즘의성능측정
__3.4.1커널수행시간
__3.4.2데이터전송시간
__3.4.3CUDA기반벡터합프로그램의성능측정및분석

4장CUDA스레드계층
_4.1CUDA스레드계층구조
__4.1.1CUDA스레드계층
__4.1.2CUDA스레드계층을위한내장변수들
__4.1.3그리드및블록의최대크기제한
_4.2CUDA스레드구조와커널호출
__4.2.1스레드레이아웃설정및커널호출
__4.2.2스레드레이아웃설정및확인예제
_4.3큰벡터에대한벡터합CUDA프로그램-스레드레이아웃

5장스레드레이아웃과인덱싱
_5.11,024보다큰벡터의합구하기
__5.1.1스레드레이아웃결정
__5.1.2각스레드가접근할데이터의인덱스계산
__5.1.3계산된인덱스를반영한커널작성
_5.2스레드인덱싱
__5.2.1메모리속배열의모습
__5.2.2스레드인덱싱연습I-스레드의전역번호
__5.2.3스레드인덱싱연습II-2차원데이터에대한인덱싱
_5.3CUDA기반대규모행렬합프로그램
__5.3.12차원그리드,2차원블록레이아웃
__5.3.21차원그리드,1차원블록레이아웃
__5.3.32차원그리드,1차원블록레이아웃

6장CUDA실행모델
_6.1엔비디아GPU아키텍처
__6.1.1스트리밍멀티프로세서
__6.1.2CUDA코어
_6.2CUDA스레드계층과GPU하드웨어
__6.2.1그리드→GPU
__6.2.2스레드블록→SM
__6.2.3워프&스레드→SM속의CUDA코어
__6.2.4무비용문맥교환(zerocontextswitchoverhead)
__6.2.5워프분기(warpdivergence)
_6.3메모리접근대기시간숨기기전략
_6.4GPU정보확인하기

7장CUDA기반행렬곱셈프로그램
_7.1행렬곱셈이란?
_7.2스레드레이아웃설정
__7.2.1입력행렬A,B기준스레드레이아웃
__7.2.2결과행렬C기준스레드레이아웃
_7.3스레드인덱싱
__7.3.1행렬C의크기가블록최대크기(1,024)보다작은경우
__7.3.2행렬C의크기가블록의최대크기(1,024)보다큰경우
_7.4구현및성능평가
__7.4.1세부구현
__7.4.2성능평가
__7.4.3부동소수점연산정밀도문제

8장CUDA메모리계층
_8.1컴퓨터시스템의메모리계층
_8.2CUDA메모리계층
__8.2.1스레드수준메모리
__8.2.2블록수준메모리
__8.2.3그리드수준메모리
__8.2.4GPU캐시
__8.2.5CUDA메모리요약
_8.3CUDA메모리모델과성능
__8.3.1병렬성최대화
__8.3.2활성워프비율

9장CUDA공유메모리
_9.1공유메모리사용방법
__9.1.1스레드블록내스레드들의공유데이터보관
__9.1.2L1캐시(HW관리캐시)
__9.1.3사용자관리캐시
_9.2공유메모리사용예제-1,024보다작은행렬의곱셈

10장공유메모리를활용한행렬곱셈프로그램
_10.1문제정의및기반코드
_10.2알고리즘설계및구현
__10.2.1전략1:행렬A의일부행과행렬B의일부열을공유메모리에적재
__10.2.2전략2:행과열을블록단위로분할하여공유메모리에적재
_10.3성능평가

11장메모리접근성능최적화
_11.1전역메모리접근최적화
__11.1.1정렬된메모리접근과병합된메모리접근
__11.1.2예제:행렬곱커널의스레드레이아웃
__11.1.3구조체의배열vs.배열의구조체
_11.2공유메모리접근최적화
__11.2.1메모리뱅크와뱅크충돌
__11.2.2예제:공유메모리활용행렬곱커널

12장동기화및동시실행
_12.1동기화
__12.1.1CUDA의동기화
_12.2CUDA스트림과동시실행
__12.2.1CUDA스트림의정의및특성
__12.2.2CUDA명령의동시실행
__12.2.3예제:데이터전송부하숨기기
__12.2.4스트림동기화
_12.3CUDA이벤트
__12.3.1CUDA이벤트API
__12.3.2CUDA이벤트를이용한커널및스트림별수행시간측정
_12.4다중GPU및이종병렬컴퓨팅
__12.4.1다중GPU사용
__12.4.2이종병렬컴퓨팅

출판사 서평

컴퓨터구조이미지와함께
한눈에보는병렬처리프로그래밍
이제싱글스레드기반의프로그래밍만학습한다면좋은모델이나기술을여러방면으로뻗어활용하기어렵습니다.이때GPGPU는고사양게임개발,인공지능,빅데이터분석,데이터마이닝등의산업에서혁신적으로활용될수있습니다.『CUDA기반병렬처리프로그래밍』을통해GPGPU와병렬프로세서에관한다양한용어와사전적의미,컴퓨터구조에서의동작방식부터이를활용한연산속도향상법까지병렬처리에관한모든것을완벽하게익혀봅시다.

이책이필요한독자
ㆍ GPGPU기술이무엇인지경험해보고싶은분
ㆍ 병렬처리프로그래밍을이해하고싶은C/C++언어중급자
ㆍ 알고리즘뿐만아니라연산처리에대해자세히학습하고싶은분
ㆍ CUDA기반의병렬처리최적화가필요한분