이미 소장하고 있다면 판매해 보세요.
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 이종 병렬 컴퓨팅 |
컴퓨터 구조 이미지와 함께
한 눈에 보는 병렬 처리 프로그래밍 이제 싱글 스레드 기반의 프로그래밍만 학습한다면 좋은 모델이나 기술을 여러 방면으로 뻗어 활용하기 어렵습니다. 이때 GPGPU는 고사양 게임 개발, 인공지능, 빅데이터 분석, 데이터 마이닝 등의 산업에서 혁신적으로 활용될 수 있습니다. 『CUDA 기반 병렬 처리 프로그래밍』을 통해 GPGPU와 병렬 프로세서에 관한 다양한 용어와 사전적 의미, 컴퓨터 구조에서의 동작 방식부터 이를 활용한 연산 속도 향상법까지 병렬 처리에 관한 모든 것을 완벽하게 익혀봅시다. 이 책이 필요한 독자 ㆍGPGPU 기술이 무엇인지 경험해보고 싶은 분 ㆍ병렬 처리 프로그래밍을 이해하고 싶은 C/C++ 언어 중급자 ㆍ알고리즘뿐만 아니라 연산 처리에 대해 자세히 학습하고 싶은 분 ㆍCUDA 기반의 병렬 처리 최적화가 필요한 분 |