본문 바로가기

리디 접속이 원활하지 않습니다.
강제 새로 고침(Ctrl + F5)이나 브라우저 캐시 삭제를 진행해주세요.
계속해서 문제가 발생한다면 리디 접속 테스트를 통해 원인을 파악하고 대응 방법을 안내드리겠습니다.
테스트 페이지로 이동하기

CUDA 기반 GPU 병렬 처리 프로그래밍 상세페이지

컴퓨터/IT 개발/프로그래밍

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

기초부터 성능 최적화 전략까지
소장종이책 정가25,000
전자책 정가20%20,000
판매가20,000
CUDA 기반 GPU 병렬 처리 프로그래밍 표지 이미지

CUDA 기반 GPU 병렬 처리 프로그래밍작품 소개

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

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

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


출판사 서평

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

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

이 책이 필요한 독자

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


저자 소개

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

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

목차

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 이종 병렬 컴퓨팅


리뷰

구매자 별점

5.0

점수비율
  • 5
  • 4
  • 3
  • 2
  • 1

2명이 평가함

리뷰 작성 영역

이 책을 평가해주세요!

내가 남긴 별점 0.0

별로예요

그저 그래요

보통이에요

좋아요

최고예요

별점 취소

구매자 표시 기준은 무엇인가요?

'구매자' 표시는 리디에서 유료도서 결제 후 다운로드 하시거나 리디셀렉트 도서를 다운로드하신 경우에만 표시됩니다.

무료 도서 (프로모션 등으로 무료로 전환된 도서 포함)
'구매자'로 표시되지 않습니다.
시리즈 도서 내 무료 도서
'구매자’로 표시되지 않습니다. 하지만 같은 시리즈의 유료 도서를 결제한 뒤 리뷰를 수정하거나 재등록하면 '구매자'로 표시됩니다.
영구 삭제
도서를 영구 삭제해도 ‘구매자’ 표시는 남아있습니다.
결제 취소
‘구매자’ 표시가 자동으로 사라집니다.

이 책과 함께 구매한 책


이 책과 함께 둘러본 책



본문 끝 최상단으로 돌아가기

spinner
앱으로 연결해서 다운로드하시겠습니까?
닫기 버튼
대여한 작품은 다운로드 시점부터 대여가 시작됩니다.
앱으로 연결해서 보시겠습니까?
닫기 버튼
앱이 설치되어 있지 않으면 앱 다운로드로 자동 연결됩니다.
모바일 버전