상세 컨텐츠

본문 제목

CUDA 기반 GPU 병렬 처리 프로그래밍

새로 나온 책

by 비제이퍼블릭 2023. 5. 25. 13:51

본문

 

제목 CUDA 기반 GPU 병렬 처리 프로그래밍

부제 기초부터 성능 최적화 전략까지

저자 김덕수

출판사 비제이퍼블릭

출간/배본가능일 2023 5 24

정가 25,000

페이지 312

판형 188*245

ISBN 979-11-6592-223-8(93000)

 

관련분류 – 카테고리 분류

국내도서 > IT 모바일 > 컴퓨터 공학 > 컴퓨터구조 일반

국내도서 > IT 모바일 > 컴퓨터 공학 > 컴퓨터구조 입문/활용

국내도서 > IT 모바일 > 프로그래밍 언어 > C

국내도서 > IT 모바일 > 프로그래밍 언어 > C++

 

책 소개

GPGPU 기술과 CUDA로 더 많은 데이터를 더 빠르게!

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

목차

1장 GPGPU 및 병렬 처리 개요

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

2장 CUDA 개요

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

3장 CUDA 프로그램의 기본 흐름

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

4장 CUDA 스레드 계층

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

5장 스레드 레이아웃과 인덱싱

_5.1 1,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.3 CUDA 기반 대규모 행렬 합 프로그램
__5.3.1 2차원 그리드, 2차원 블록 레이아웃
__5.3.2 1차원 그리드, 1차원 블록 레이아웃
__5.3.3 2차원 그리드, 1차원 블록 레이아웃

6장 CUDA 실행 모델

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

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.2 CUDA 메모리 계층
__8.2.1 스레드 수준 메모리
__8.2.2 블록 수준 메모리
__8.2.3 그리드 수준 메모리
__8.2.4 GPU 캐시
__8.2.5 CUDA 메모리 요약
_8.3 CUDA 메모리 모델과 성능
__8.3.1 병렬성 최대화
__8.3.2 활성 워프 비율

9장 CUDA 공유 메모리

_9.1 공유 메모리 사용 방법
__9.1.1 스레드 블록 내 스레드들의 공유 데이터 보관
__9.1.2 L1 캐시(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.1 CUDA의 동기화
_12.2 CUDA 스트림과 동시 실행
__12.2.1 CUDA 스트림의 정의 및 특성
__12.2.2 CUDA 명령의 동시 실행
__12.2.3 예제: 데이터 전송 부하 숨기기
__12.2.4 스트림 동기화
_12.3 CUDA 이벤트
__12.3.1 CUDA 이벤트 API
__12.3.2 CUDA 이벤트를 이용한 커널 및 스트림별 수행 시간 측정
_12.4 다중 GPU 및 이종 병렬 컴퓨팅
__12.4.1 다중 GPU 사용
__12.4.2 이종 병렬 컴퓨팅

 

 

저자 소개

김덕수

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

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

 

출판사 리뷰

컴퓨터 구조 이미지와 함께
한 눈에 보는 병렬 처리 프로그래밍

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

이 책이 필요한 독자

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

책 보러가기

- 교보문고: https://me2.kr/eNREl

 

도서 소스코드 다운로드 링크

https://github.com/bluekds/CUDA_Programming/tree/master/Book_BJ

 

관련글 더보기

댓글 영역