이미 소장하고 있다면 판매해 보세요.
|
머리말
감사의 글 역자의 글 Chapter 1 서론 1.1 병렬 컴퓨터로써의 GPU 1.2 최신 GPU의 구조 1.3 고성능과 병렬화의 필요성 1.4 병렬 프로그래밍 언어와 모델 1.5 중요한 목표 1.6 책의 구성 Chapter 2 GPU 컴퓨팅의 역사 2.1 그래픽스 파이프라인의 진화 2.1.1 고정-함수 그래픽스 파이프라인의 시대 2.1.2 실시간 그래픽스 프로그래밍의 진화 2.1.3 그래픽스와 컴퓨팅 프로세서의 통합 2.1.4 GPGPU: 중간 단계 2.2 GPU 컴퓨팅 2.2.1 확장가능성있는 GPU 2.2.2 최근의 발전 2.3 미래의 추세 Chapter 3 CUDA의 기초 3.1 데이터 병렬성 3.2 CUDA 프로그램의 구조 3.3 행렬-행렬 곱셈의 예 3.4 디바이스 메모리와 데이터 전송 3.5 커널 함수와 쓰레딩 3.6 요약 3.6.1 함수 선언 3.6.2 커널 개시 3.6.3 미리 정의된 변수 3.6.4 런타임 API Chapter 4 CUDA 쓰레드 4.1 CUDA 쓰레드의 구성 4.2 blockIdx와 threadIdx 사용하기 4.3 동기화와 투명한 확장가능성 4.4 쓰레드의 할당 4.5 쓰레드 스케줄링과 지연시간 감내 4.6 요약 4.7 연습문제 Chapter 5 CUDA 메모리 5.1 메모리 접근 효율성의 중요성 5.2 CUDA 디바이스 메모리의 종류 5.3 전역 메모리의 통신량을 줄이기 위한 전략 5.4 병렬성의 제한요소인 메모리 5.5 요약 5.6 연습문제 Chapter 6 성능 고려사항 6.1 쓰레드 수행에 대한 더 많은 것 6.2 전역 메모리 대역폭 6.3 SM 자원의 동적 분할 6.4 데이터 미리가져오기 6.5 명령어 혼합 6.6 쓰레드 밀도 6.7 측정된 성능 및 요약 6.8 연습문제 Chapter 7 부동소수점 고려사항 7.1 부동소수점 형식 7.1.1 M의 정규화된 표현 7.1.2 E의 초과 인코딩 7.2 표현 가능한 수 7.3 특별한 비트 패턴 및 정밀도 7.4 산술 정확도 및 자리맞춤 7.5 알고리즘 고려사항 7.6 요약 7.7 연습문제 Chapter 8 응용프로그램 사례 연구: 고급 MRI 복원 8.1 응용프로그램의 배경지식 8.2 반복적 복원 8.3 FHd 계산하기 8.4 최종 평가 8.5 연습문제 Chapter 9 응용프로그램 사례연구: 분자 시각화와 분석 9.1 응용프로그램의 배경 지식 9.2 간단한 커널 구현 9.3 명령어 실행 효율 9.4 메모리 병합(coalescing) 9.5 추가 성능 비교 9.6 다중 GPU 사용하기 9.7 연습문제 Chapter 10 병렬 프로그래밍과 정보과학적인 사고 10.1 병렬 프로그래밍의 목적 10.2 문제의 분해 10.3 알고리즘 선택 10.4 정보과학적인 사고 10.5 연습문제 Chapter 11 OpenCL의 간략한 소개 11.1 배경 지식 11.2 데이터 병렬성 모델 11.3 디바이스 구조 11.4 커널함수 11.5 디바이스 관리와 커널 개시 11.6 OpenCL로 구현한 정전위 맵 11.7 요약 11.8 연습문제 Chapter 12 맺음말과 미래 전망 12.1 목표 재고찰 12.2 메모리 구조의 진화 12.2.1 큰 가상 어드레스 공간과 물리 어드레스 공간 12.2.2 통합된 디바이스 메모리 공간 12.2.3 캐쉬설정과 스크래치 패드 12.2.4 개선된 원자 연산 12.2.5 개선된 전역 메모리 접근 12.3 커널 실행 제어의 진화 12.3.1 커널 함수 내에서의 함수 호출 12.3.2 커널 함수의 예외 처리 12.3.3 다중 커널의 동시 실행 12.4 코어 성능 12.4.1 2배정밀도의 실행속도 12.4.2 제어 흐름의 효율 향상 12.5 프로그래밍 환경 12.6 밝은 전망 부록 A 행렬곱셉(호스트버전 소스코드) A.1 matrixmul.cu A.2 matrixmul_gold.cu A.3 matrixmul.h A.4 assist.h A.5 예상 결과 부록 B GPU 계산 능력 B.1 GPU 계산 능력 표 B.2 메모리 병합의 변형들 |
|
대규모 병렬 프로세서 프로그래밍: CUDA를 이용한 실용적 접근은 학생들과 전문가 모두에게 병렬 프로그래밍과 GPU 아키텍처의 기본 개념을 밝혀주며, 병렬 프로그램을 작성하기 위한 다양한 기법들을 자세히 소개하고 있다. 사례 연구들은 정보과학적 사고로부터 시작해서 효과적이고 효율적인 병렬 프로그램으로 끝나는 전체 개발 과정을 제시한다.
특징 고성능 병렬 컴퓨팅에 적합한 방식으로 문제들을 생각할 수 있게 해주는 정보과학적 사고에 대해 설명한다. 대규모 병렬 컴퓨팅 환경을 위해 만들어진 NVIDIA의 소프트웨어 개발툴인 CUDA(Compute Unified Device Architecture)를 활용한다. OpenCL뿐만 아니라 CUDA 프로그래밍 모델을 사용하여 고성능과 고신뢰성을 모두 달성하는 법을 보여준다. 강의자료/ 다운로드 www.elsevierdirect.com/9780123814722 책의 구성 2장은 GPU 컴퓨팅의 역사를 살펴본다. 그래픽스 하드웨어가 점점 더 프로그래밍 가능한 방향으로 진화된 이야기를 간략히 요약하고, GPGPU로 어떻게 발전되어 왔는지의 역사를 설명할 것이다. 3장은 CUDA 프로그래밍을 소개한다. 이 장은 학생들이 C 프로그래밍에 대한 경험이 있음을 가정한다. 처음에는 이형적인 CPU/GPU 시스템을 지원하고, 널리 사용되는 SPMD(single program multiple data) 병렬프로그래밍 모델을 지원하기 위한 간단한 C의 확장으로 CUDA를 소개할 것이다. 4장은 쓰레드의 구성과 쓰레드가 실행되는 과정과 기본적인 성능 개념을 이해하기 위한 실행 모델(execution model)을 설명한다. 5장은 프로그램의 실행 속도 향상을 위하여 CUDA 변수를 저장하는 데 사용되는 특별한 메모리들을 다룬다. 6장은 CUDA 커널 함수의 성능에 영향을 주는 주된 요인들을 소개한다. 7장은 부동소수점 표현 방식과 아울러 정밀도와 정확도의 개념을 소개한다. 8장과 9장은 2개의 실제 응용프로그램을 통한 사례 연구를 다룬다. 사례 연구를 통하여 독자들은 응용프로그램을 어떻게 병렬화하는지와 속도 개선을 위해서 어떻게 최적화하는지에 대한 사고 과정을 경험하게 될 것이다. 10장은 병렬프로그래밍 기술을 더 일반화하여 문제를 분해하는 원리(decomposition principle), 알고리즘 전략, 그리고 정보과학적 사고방식(computational thinking) 등을 다룬다. 11장은 CUDA의 관점에서 OpenCL 프로그래밍 모델을 소개한다. 독자들은 OpenCL이 CUDA와 매우 비슷하다는 것을 알게 될 것이다. 12장은 결론과 아울러 대규모 병렬 프로그래밍의 미래에 대한 전망을 한다. 우리가 처음에 목적했던 바를 되돌아보며 책의 각 장들이 이 목적들을 이루기 위해 어떻게 구성되었는지를 요약한다. |