CUDA 병렬 프로그래밍
작가정보
목차
- Chapter 01 CUDA란?
01 그래픽 카드의 성능 향상
1.1 그래픽 카드의 탄생
1.2 그래픽 카드의 발전
1.3 GPU
02 CPU vs. GPU
2.1 다른 환경에 있는 프로세서
2.2 트랜지스터 자원의 배분
2.3 메모리 밴드 폭
03 GPGPU
04 CUDA
05 CUDA의 장점
06 용어 해설
6.1 페르미(Fermi)
6.2 테슬라(Tesla)
6.3 쿼드로(Quadro)
Chapter 02 CUDA의 기본
01 CPU의 데이터 처리
02 CUDA의 데이터 처리
2.1 CUDA의 데이터 흐름
2.2 그래픽 카드 메모리 사용하기
2.3 CUDA 데이터의 병렬처리
2.4 CUDA 커널 함수
2.5 데이터 전송 부하
2.6 CUDA의 적용 분야
03 CUDA 프로세서 아키텍처
3.1 G80/G90시리즈 그래픽 카드 블록 다이어그램
3.2 스트리밍 프로세서
3.3 스트리밍 멀티프로세서
3.4 텍스처/프로세서 클러스터
3.5 그래픽 프로세서 유닛(GPU)
3.6 Fermi 아키텍처(GF100)
04 용어 정리
Chapter 03 CUDA 프로그래밍 준비
01 CUDA 프로그램 설치
1.1 개발자 드라이버
1.2 CUDA 툴키트 설치하기
1.3 GPU 컴퓨팅 SDK 코드 샘플 설치하기
1.4 NVIDIA 지원
02 CUDA 첫 프로젝트: Hello World!
03 CUDA C언어
3.1 함수의 수식어
3.2 변수의 수식어
Chapter 04 스레드 블록 아키텍처
01 CUDA 스레드 모델
1.1 CPU의 스레드, 태스크 분할
1.2 CUDA의 스레드 모델
1.3 GPU 스레드 처리 능력
02 그리드 블록 모델
2.1 CUDA 블록과 1차원 스레드 생성
2.2 두 벡터의 합 계산
2.3 스레드 블록 생성 가이드라인
2.4 스레드 블록의 개수 설정
2.5 블록과 스레드의 2차원 배치
2.6 매트릭스 곱
2.7 스레드 3차원 구성
2.8 그리드
03 스레드 스케줄링
3.1 스레드 문맥 교환
3.2 SP의 스레드 스케줄링
3.3 워프, SM의 스레드 스케줄링
3.4 SIMT
3.5 SM의 워프 스케줄링
3.6 Fermi(GTX400 계열) 스레드 스케줄링
Chapter 05 메모리 아키텍처
01 CUDA 메모리 아키텍처
02 CUDA 메모리
2.1 레지스터(Register)
2.2 로컬 메모리
2.3 공유 메모리
2.4 C=AB 매트릭스 곱
2.5 글로벌 메모리
2.6 상수 메모리
2.7 텍스처 메모리
03 메모리 성능 최적화
3.1 글로벌 메모리 액세스 결합
3.2 공유 메모리 뱅크 충돌
3.3 매트릭스 계산 sgemmNN 최적화
04 고정된 메모리
05 기타 메모리 사용
5.1 제로 복사
5.2 포터블 고정 메모리
Chapter 06 CUDA API 함수
01 CUDA API 아키텍처
1.1 CUDA 드라이버 API
1.2 CUDA 실행 시간 API
1.3 CUDA 라이브러리
02 CUDA 드라이버 API와 실행 시간 API 비교
2.1 CUDA 드라이버 API와 실행 시간 API
2.2 두 벡터의 합
Chapter 07 성능 측정
01 소요 시간 측정
1.1 CPU 타이머 활용
1.2 GPU 타이머 활용
1.3 이벤트 API의 활용
02 디바이스 쿼리
03 cubin 파일
3.1 cubin 파일
3.2 '--ptxas-options=-v' 옵션 설정
3.3 액티브 블록
04 CUDA 점유 계산기
05 비주얼 프로파일러
5.1 CUDA Visual Profiler의 실행
5.2 세션 설정
5.3 측정 결과
Chapter 08 스트림
01 스트림 개요
1.1 순차적 복사와 실행
1.2 병행 복사와 실행
02 스트림 성능 측정
2.1 순차 코드
2.2 병행 실행 코드
2.3 성능 측정
Chapter 09 동기화
01 경쟁상태
02 아토믹 함수
2.1 컴파일러 설정
2.2 산술 아토믹 함수
2.3 비트 계산 아토믹 함수
03 스레드 카운트
04 히스토그램
4.1 글로벌 메모리를 이용한 히스토그램
4.2 공유 메모리를 이용한 히스토그램
05 스레드 동기화: syncthreads
06 글로벌 동기화
Chapter 10 성능 최적화
01 CUDA의 성능 최적화
1.1 성능 최적화를 위한 CUDA의 중요 특징
1.2 CUDA 이론적 성능
02 병렬축소를 이용한 총합 계산
2.1 병렬축소 프로그램의 설계
2.2 최적화 목표치
2.3 1단계
2.4 2단계: 분기 발산 해결
2.5 3단계: 뱅크 충돌 해결
2.6 4단계: 첫 번째 요소 로딩과 동시에 합 계산
2.7 5단계: 마지막 워프 언롤
2.8 6단계: 전체 코드의 언롤
2.9 7단계: 알고리즘 캐스케이딩
Chapter 11 CUDA 라이브러리
01 BLAS 라이브러리
02 CUBLAS 라이브러리를 이용한 구현
2.1 BLAS 기본 함수
2.2 C로 구현한 32bit 실수형 3단계 gemm
2.3 CBLAS 라이브러리를 이용한 gemm 구현
2.4 CUBLAS 라이브러리를 이용한 구현
2.5 CUBLAS API 함수
2.6 추가 정보
03 고속 푸리에 변환
04 CUFFT 라이브러리
4.1 개요
4.2 라이브러리 사용
4.3 API 함수
4.4 성능 비교
4.5 추가 자료
05 수학 라이브러리
Chapter 12 Multi GPUs
01 디바이스 관리 API
02 OpenMP
2.1 공유 메모리 병렬 프로그래밍의 표준
2.2 OpenMP 모델
03 OpenMP를 이용한 Multi GPUs 작업 분할
3.1 순차적 CUDA 실행
3.2 OpenMP를 이용한 병렬 실행
04 MPI
05 하이브리드 병렬 프로그래밍
Chapter 13 디버깅
01 Parallel Nsight
1.1 사용 환경
1.2 내려받기
1.3 설치
1.4 디버거 시작
1.5 프로젝트 디버깅
02 에뮬레이션 상태
Chapter 14 Appendix
A1 CUDA 리눅스 설치
A1.1 CUDA 드라이버 설치
A1.2 CUDA 툴키트 설치
A1.3 CUDA SDK 설치
A1.4 freeglut의 설치
A2 CUDA 가능한 디바이스
A2.1 GeForce 시리즈
A2.2 Tesla 시리즈
A2.3 Quadro 시리즈
A3 계산 능력
참고문헌
INDEX
출판사 서평
■ NVIDIA의 병렬 컴퓨팅 아키텍처 CUDA
GPGPU는 High Performance Computing(HPC)에 있어서 가장 적합한 솔루션이라고 평가되고 있으며 세상에서 가장 빠르게 확산되는 기술 중의 하나입니다. 이러한 그래픽 카드를 이용한 GPGPU의 통합 개발 환경 제공을 목적으로 하는 NVIDIA의 병렬 컴퓨팅 아키텍처인 CUDA(Compute Unified Device Architecture) 병렬 프로그래밍을 소개하고 그 활용 방법을 배워봅니다. GPU 환경에서의 CUDA 프로그래밍 입문서로, 높은 성능을 얻기 위한 최적화 방법을 소개합니다. 이러한 CUDA를 이용하면 높은 연산 처리 능력, 병렬 프로그램의 확장성, 저렴한 비용, 편리한 설치 등의 장점을 얻을 수 있습니다.
■ CUDA 활용과 성능 최적화 방법 소개
기초 과학에서 CUDA를 이용하여 수치 해석을 하는 연구원, GPGPU에 입문하려는 프로그래머를 대상으로 쉽게 설명하고자 하였습니다. 현재 CUDA는 수학, 물리, 화학과 같은 기초 과학 분야에 수치 해석을 위해 많이 사용하고 있으므로 전문 프로그래머가 아닌 기초 과학자들도 이해하기 쉽도록 구성하였습니다. 아울러 CUDA를 처음 접하는 프로그래머도 큰 부담없이 관련 기술을 바로 적용해볼 수 있도록 도와 드립니다. 프로그램의 대세는 CUDA와 같은 GPGPU로 흐르고 있지만, 한글로 된 도서가 거의 없으므로 이 책을 통해 조금이나마 도움을 드리고자 합니다.
■ CUDA 성능 최적화 방법 소개
아울러 CUDA 하드웨어 아키텍처와 동작 원리를 함께 설명하므로 이를 기반으로 올바른 CUDA 소프트웨어를 제작할 수 있습니다. 이와 함께 다음과 같은 소프트웨어 성능 향상을 위한 최적화 방법도 자세하게 설명합니다.
- 글로벌 메모리 액세스 결합(Coalescing)
- 공유 메모리 뱅크 충돌(Bank Conflict)
- 분기 발산(Divergent branching)
- 루프 언롤링(Unrolling)
- 알고리즘 최적화
기본정보
ISBN | 9788965400158 |
---|---|
발행(출시)일자 | 2011년 08월 20일 |
쪽수 | 330쪽 |
크기 |
188 * 254
mm
|
총권수 | 1권 |
Klover 리뷰 (0)
구매 후 리뷰 작성 시, e교환권 200원 적립
문장수집 (0)
e교환권은 적립 일로부터 180일 동안 사용 가능합니다. 리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 한 상품에 최초 1회만 제공됩니다.
주문취소/반품/절판/품절 시 리워드 대상에서 제외됩니다.
판매가 5,000원 미만 상품의 경우 리워드 지급 대상에서 제외됩니다. (2024년 9월 30일부터 적용)
구매 후 리뷰 작성 시, e교환권 100원 적립
-
반품/교환방법
* 오픈마켓, 해외배송 주문, 기프트 주문시 [1:1 상담>반품/교환/환불] 또는 고객센터 (1544-1900) -
반품/교환가능 기간
상품의 결함 및 계약내용과 다를 경우 문제점 발견 후 30일 이내 -
반품/교환비용
-
반품/교환 불가 사유
(단지 확인을 위한 포장 훼손은 제외)
2) 소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우
예) 화장품, 식품, 가전제품(악세서리 포함) 등
3) 복제가 가능한 상품 등의 포장을 훼손한 경우
예) 음반/DVD/비디오, 소프트웨어, 만화책, 잡지, 영상 화보집
4) 소비자의 요청에 따라 개별적으로 주문 제작되는 상품의 경우 ((1)해외주문도서)
5) 디지털 컨텐츠인 ebook, 오디오북 등을 1회이상 ‘다운로드’를 받았거나 '바로보기'로 열람한 경우
6) 시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우
7) 전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에 해당되는 경우
8) 세트상품 일부만 반품 불가 (필요시 세트상품 반품 후 낱권 재구매)
9) 기타 반품 불가 품목 - 잡지, 테이프, 대학입시자료, 사진집, 방통대 교재, 교과서, 만화, 미디어전품목, 악보집, 정부간행물, 지도, 각종 수험서, 적성검사자료, 성경, 사전, 법령집, 지류, 필기구류, 시즌상품, 개봉한 상품 등 -
상품 품절
-
소비자 피해보상 환불 지연에 따른 배상
2) 대금 환불 및 환불지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의 소비자 보호에 관한 법률에 따라 처리함
상품 설명에 반품/교환 관련한 안내가 있는 경우 그 내용을 우선으로 합니다. (업체 사정에 따라 달라질 수 있습니다.)
기분 좋은 발견
이 분야의 베스트
이 분야의 신간
-
닥터, 코드를 만나다10% 27,000 원
-
리액트의 정석 with 타입스크립트34,000 원
-
코딩 자율학습 잔재미코딩의 파이썬 데이터 분석 입문10% 23,400 원
-
개발자를 위한 쉬운 쿠버네티스10% 27,000 원
-
개발자를 위한 쉬운 도커10% 25,200 원