HOME > 상세정보

상세정보

예제로 배우는 CUDA 프로그래밍 : 입문자를 위한 GPGPU 프로그래밍의 기초 (94회 대출)

자료유형
단행본
개인저자
Sanders, Jason Kandrot, Edward, 저 박춘언, 역
서명 / 저자사항
예제로 배우는 CUDA 프로그래밍 : 입문자를 위한 GPGPU 프로그래밍의 기초 / 제이슨 샌더스, 에드워드 캔드롯 지음 ; 박춘언 옮김
발행사항
서울 :   Bj퍼블릭,   2011  
형태사항
328 p. : 삽화 ; 25 cm
원표제
CUDA by example : an introduction to general-purpose GPU programming
ISBN
9788994774060
일반주기
색인수록  
부록: 돌아온 내적 예제, 해시 테이블 구현, 요약  
일반주제명
Application software -- Development Computer architecture Parallel programming (Computer science)
000 01236camcc2200361 c 4500
001 000045678663
005 20111118144147
007 ta
008 111117s2011 ulka 001c kor
020 ▼a 9788994774060 ▼g 93560
035 ▼a (KERIS)BIB000012571462
040 ▼a 211064 ▼c 211064 ▼d 244002 ▼d 211009
041 0 ▼a kor ▼h eng
082 0 0 ▼a 005.2/75 ▼2 22
085 ▼a 005.275 ▼2 DDCK
090 ▼a 005.275 ▼b 2011z3
100 1 ▼a Sanders, Jason
245 1 0 ▼a 예제로 배우는 CUDA 프로그래밍 : ▼b 입문자를 위한 GPGPU 프로그래밍의 기초 / ▼d 제이슨 샌더스, ▼e 에드워드 캔드롯 지음 ; ▼e 박춘언 옮김
246 1 9 ▼a CUDA by example : ▼b an introduction to general-purpose GPU programming
246 3 ▼a 예제로 배우는 쿠다 프로그래밍
260 ▼a 서울 : ▼b Bj퍼블릭, ▼c 2011
300 ▼a 328 p. : ▼b 삽화 ; ▼c 25 cm
500 ▼a 색인수록
500 ▼a 부록: 돌아온 내적 예제, 해시 테이블 구현, 요약
650 0 ▼a Application software ▼x Development
650 0 ▼a Computer architecture
650 0 ▼a Parallel programming (Computer science)
700 1 ▼a Kandrot, Edward, ▼e
700 1 ▼a 박춘언, ▼e
900 1 0 ▼a 샌더스, 제이슨, ▼e
900 1 0 ▼a 캔드롯, 에드워드, ▼e
945 ▼a KLPA

No. 소장처 청구기호 등록번호 도서상태 반납예정일 예약 서비스
No. 1 소장처 과학도서관/Sci-Info(1층서고)/ 청구기호 005.275 2011z3 등록번호 121214782 도서상태 대출가능 반납예정일 예약 서비스 B M
No. 2 소장처 의학도서관/자료실(3층)/ 청구기호 005.275 2011z3 등록번호 131051330 도서상태 대출가능 반납예정일 예약 서비스 B
No. 3 소장처 세종학술정보원/과학기술실/ 청구기호 005.275 2011z3 등록번호 151342943 도서상태 대출가능 반납예정일 예약 서비스
No. 소장처 청구기호 등록번호 도서상태 반납예정일 예약 서비스
No. 1 소장처 과학도서관/Sci-Info(1층서고)/ 청구기호 005.275 2011z3 등록번호 121214782 도서상태 대출가능 반납예정일 예약 서비스 B M
No. 소장처 청구기호 등록번호 도서상태 반납예정일 예약 서비스
No. 1 소장처 의학도서관/자료실(3층)/ 청구기호 005.275 2011z3 등록번호 131051330 도서상태 대출가능 반납예정일 예약 서비스 B
No. 소장처 청구기호 등록번호 도서상태 반납예정일 예약 서비스
No. 1 소장처 세종학술정보원/과학기술실/ 청구기호 005.275 2011z3 등록번호 151342943 도서상태 대출가능 반납예정일 예약 서비스

컨텐츠정보

책소개

입문자를 위한 GPGPU 프로그래밍의 기초 가이드북. 최근 대용량 병렬 가속기들의 프로그래밍 문제에 대한 가장 혁신적이고 강력한 해결책 중 하나를 이용함으로써 소프트웨어 개발에서의 문제의 핵심을 설명한다. 예제, 프로그램을 구성하는 과정, NVIDIA GPU를 효율적으로 사용하는 통찰력을 제공함으로써 CUDA C 프로그래밍에 대한 소개를 한다. 또한 간단한 예제부터 (로직과 성능을 포함한) 디버깅까지 입문자들을 위한 병렬 컴퓨팅의 개념들을 설명한다. 그뿐만 아니라, 고급 주제 및 많은 어플리케이션들을 이용하고 구축하면서 발생하는 문제들도 다루고 있다. 이 책에서는 프로그래밍 예제들을 통하여 제시한 개념들을 보강한다.

예제로 배우는 CUDA 프로그래밍: 입문자를 위한 GPGPU 프로그래밍의 기초

"이 책은 가속기 기반(accelerator-based)의 컴퓨팅 시스템에서 작업을 수행하는 이들이 읽어야 할 책이다." - 잭 돈가라(Jack Dongarra), 테네시 대학 오크리지 국립 연구소 -

《예제로 배우는 CUDA 프로그래밍》은 최근 대용량 병렬 가속기들의 프로그래밍 문제에 대한 가장 혁신적이고 강력한 해결책 중 하나를 이용함으로써 소프트웨어 개발에서의 문제의 핵심을 설명한다.

이 책은 여러분에게 예제, 프로그램을 구성하는 과정, NVIDIA GPU를 효율적으로 사용하는 통찰력을 제공함으로써 CUDA C 프로그래밍에 대한 소개를 한다. 또한 간단한 예제부터 (로직과 성능을 포함한) 디버깅까지 입문자들을 위한 병렬 컴퓨팅의 개념들을 설명한다. 그뿐만 아니라, 고급 주제 및 많은 어플리케이션들을 이용하고 구축하면서 발생하는 문제들도 다루고 있다. 이 책에서는 프로그래밍 예제들을 통하여 제시한 개념들을 보강한다.

CUDA는 병렬 프로그램 개발이 가능하도록 설계된 컴퓨팅 아키텍처다. CUDA 아키텍처는 대규모 소프트웨어 플랫폼에서 프로그래머들이 고성능 어플리케이션을 제작할 때 GPU(그래픽스 프로세서 유닛)의 막강한 성능을 이용할 수 있게 도와준다. 물론 GPU는 오랫동안 그래픽스와 게임 어플리케이션에서 이용 가능하였지만, 지금은 CUDA가 과학, 엔지니어링, 금융을 포함한 다른 분야에서 어플리케이션을 제작하는 프로그래머들에게 GPU의 가치 있는 자원을 제공해준다. 그래픽스 프로그래밍에 대한 지식이 필요 없으며, 단지 조금 확장된 C 언어로 프로그래밍할 수 있는 능력만 있으면 누구나 배울 수 있다.

CUDA 소프트웨어 플랫폼 팀의 두 명의 책임이 집필한 예제로 배우는 CUDA 프로그래밍은 새로운 기술을 이용하는 방법을 프로그래머들에게 보여준다. 저자들은 동작하는 예제들을 통해 CUDA 개발에서의 각 부문을 소개한다. 이 책에서는 CUDA 플랫폼 및 아키텍처에 대한 간결한 소개와 CUDA C에 대한 빠른 학습을 가이드하고 난 후, CUDA의 주요 특징들과 관련된 기술들과 그들 간의 균형 있는 사용법에 대해 상세히 설명한다. 여러분은 이 책에서 CUDA C의 확장 문법들과 정말 뛰어난 성능의 CUDA 소프트웨어를 작성하는 방법을 발견할 것이다.

이 책에 포함된 주요 주제들
- 병렬 프로그래밍
- 원자
- 스레드 협력
- 스트림
- 상수 메모리와 이벤트
- 다중 GPU 상에서의 CUDA C
- 텍스처 메모리
- 고급 원자
- 그래픽스 상호운용성
- 그 외의 CUDA 자원들

여러분이 필요로 하는 모든 CUDA 소프트웨어 툴들은 NVIDIA에서 무료로 다운로드 가능하다.

독자 대상
이 책은 가속 기반의 컴퓨팅 시스템을 이용하여 작업을 수행하는 사람들을 대상으로 하고, 컴퓨팅을 깊이있게 살펴보며 직면할 수도 있는 많은 문제들에 대한 해결 방안들을 제시한다. 특히 어플리케이션 개발자, 수치와 관련된 라이브러리 작성자, 병렬 컴퓨팅을 가르치는 선생님 및 학생들에게 유용하다.


이 책은 컴퓨터 그래픽 처리 장치(GPU)의 능력을 이용함으로써, 광범위의 어플리케이션들을 위한 고성능 소프트웨어를 작성하는 방법을 보여준다. 원래 GPU는 하나의 모니터 상에서 컴퓨터 그래픽을 렌더링하기 위해 설계되었지만(여전히 이 목적으로 사용되고 있다) 과학, 엔지니어링, 금융 등 다른 분야에서도 동일하게 요구되는 프로그램들 때문에 점점 더 많은 요구를 받고 있다. 우리는 그래픽 분야가 아닌 문제들을 다루는 GPU 프로그램들을 총괄적으로 범용(general-purpose) GPU 프로그램이라고 부른다. 여러분이 이 책으로부터 무언가를 배우기 위해서는 C나 C++에 대한 일부 경험이 필요하겠지만, 다행히도 컴퓨터 그래픽스에 대한 지식은 전혀 필요하지 않다. 여러분은 단순히 여러분의 기존 프로그래밍 기술에 GPU 프로그래밍 기술을 쌓을 수 있는 하나의 기회만 제공받을 뿐이다.

여러분은 범용의 계산 작업들을 수행하는 NVIDIA GPU들을 프로그래밍하기 위해서 CUDA가 무엇인지 알고자 할 것이다. NVIDIA GPU들은 CUDA 아키텍처로 알려진 것을 기반으로 제작되었으며, 이 CUDA 아키텍처는 본래의 그래픽스 렌더링 작업들과 범용의 작업을 수행할 수 있는 GPU를 제작하기 위한 NVIDIA의 의도로 볼 수 있다. CUDA가 가능한 GPU들을 프로그래밍하기 위해서 여러분은 CUDA C라는 언어를 이용할 것이다. 이 책의 도입부에서 보겠지만, CUDA C는 근본적으로 C와 같으며 NVIDIA GPU들과 같은 대용량 병렬 기계들을 프로그래밍 할 수 있게 소수의 확장 문법들을 제공한다.

이 책은 C 코드를 무난하게 읽거나 작성할 수 있을 정도로 C나 C++에 어느 정도 친숙한 프로그래머들을 대상으로 집필되었다. 이 책은 여러분이 C 언어에 어느 정도 경험이 있다는 전제하에 작성되었으며, NVIDIA의 CUDA C 프로그래밍 언어를 빠르게 학습할 수 있도록 예제 중심으로 기술되었다. 여러분이 큰 규모의 소프트웨어 아키텍처를 다뤄봤거나 C 컴파일러 및 운영체제 커널을 작성해 봤거나 ANSI C 표준을 결코 상세히 알고 있을 필요는 없지만, 이 책에서는 C 문법이나 malloc(), memcpy()와 같은 일반 C 라이브러리 함수들을 살펴보기 위한 시간은 할애하지 않는다. 따라서 우리는 여러분이 이러한 것들에 대해서는 이미 상당히 익숙하다고 가정할 것이다.

비록 이 책은 일반 병렬 프로그래밍 패러다임을 다루고 있지 않지만, 여러분은 일반 병렬 프로그래밍 패러다임을 고려해야 하는 일부 기술들과 직면할 것이다. 또한 이 책은 거의 모든 CUDA API들을 살펴보긴 하겠지만 광범위한 API 참고서로서 제공되지는 않을 뿐만 아니라, CUDA C 소프트웨어 개발을 하기 위해 사용할 수 있는 모든 툴에 대해서도 세세하게 다루지는 않을 것이다. 따라서 여러분이 이 책을 NVIDIA에서 무료로 제공하는 문서들, 특히 NVIDIA CUDA Programming Guide와 NVIDIA CUDA Best Practices Guide를 병행해서 보길 강력히 추천한다. 그렇다고 이러한 문서들을 확보하는 데 스트레스 받을 필요는 없다. 왜냐하면 이 책이 여러분이 해야 할 모든 것들을 알려줄 것이기 때문이다.

CUDA C와 함께 NVIDIA GPU 프로그래밍의 세계가 바로 지금 여러분을 기다리고 있다!


정보제공 : Aladin

저자소개

제이슨 샌더스(지은이)

엔비디아 CUDA 플랫폼 그룹의 책임 소프트웨어 엔지니어다. CUDA 시스템 소프트웨어의 초기 배포판을 개발하는 데 도움을 주었으며 헤테로지니어스 컴퓨팅의 산업 표준인 OpenCL 1.0 스펙에도 기여했다. 그는 ATI 테크놀로지, 애플, 노벨에서 근무한 경험이 있다.

에드워드 캔드롯(지은이)

NVIDIA CUDA 알고리즘 팀의 책임 소프트웨어 엔지니어다. Adobe, Microsoft, Google 및 Autodesk 사를 포함하여 업계에서 20년 이상 코드를 최적화하고 성능을 향상시키는 데 전념한 경험을 가지고 있다.

박춘언(옮긴이)

삼성전자 DMC 연구소 S/W 플랫폼 팀에서 스마트폰 플랫폼 개발 업무에 임하고 있다. 3D 그래픽스, 소프트웨어 아키텍처, 시스템 프로그래밍, 병렬 프로그래밍 등에 관심이 많으나 최근에는 3D 그래픽스, GUI 분야에 전념하고 있으며 각 종 분야의 학습한 내용을 개인 블로그(hermet.pe.kr)에 틈틈이 개제하여 지식을 공유하고 있다. 이번 CUDA 번역이 끝난 시점에는 EFL(Enlightenment Foundation Library) 오픈 소스 개발에 전념하고 있을 것이다.

정보제공 : Aladin

목차

목차
서문 = 12
머리말 = 14
감사의 글 = 16
저자 소개 = 18
역자의 글 = 19
역자 소개 = 21
1장. 왜 CUDA인가? 왜 지금인가? = 23
 1.1 이번 장의 목표 = 24
 1.2 병렬 프로세싱의 시대 = 24
  1.2.1. 중앙 처리 장치 = 24
 1.3 GPU 컴퓨팅의 도래 = 26
  1.3.1. GPU의 간략한 역사 = 26
  1.3.2. 초창기의 GPU 컴퓨팅 = 27
 1.4 CUDA = 29
  1.4.1. CUDA 아키텍처란 무엇인가? = 30
  1.4.2. CUDA 아키텍처의 사용 = 30
 1.5 CUDA를 이용한 어플리케이션 = 31
  1.5.1. 의학 화상(MEDICAL IMAGE) = 31
  1.5.2. 컴퓨터를 이용한 유체동역학 = 32
  1.5.3. 환경 과학 = 33
 1.6 요약 = 34
2장. 시작하기 = 37
 2.1 이번 장의 목표 = 38
 2.2 개발 환경 = 38
  2.2.1. CUDA가 가능한 그래픽스 프로세서 = 38
  2.2.2. NVIDIA 디바이스 드라이버 = 40
  2.2.3. CUDA 개발 툴킷 = 40
  2.2.4. 표준 C 컴파일러 = 41
 2.3 요약 = 44
3장. CUDA C에 대한 소개 = 47
 3.1 이번 장의 목표 = 48
 3.2 첫 번째 프로그램 = 48
  3.2.1. Hello, World! = 48
  3.2.2. 커널 호출 = 49
  3.2.3. 매개변수 전달 = 51
 3.3 디바이스 정보 질의하기 = 54
 3.4 디바이스 속성 이용하기 = 59
 3.5 요약 = 61
4장. CUDA C를 이용한 병렬 프로그래밍 = 65
 4.1 이번 장의 목표 = 66
 4.2 CUDA 병렬 프로그래밍 = 66
  4.2.1. 벡터의 합 = 66
  4.2.2. 재미있는 예제 = 75
 4.3 요약 = 85
5장. 스레드 협력 = 89
 5.1 이번 장의 목표 = 90
 5.2 병렬 블록들을 분할하기 = 90
  5.2.1. 돌아온 벡터 합 = 91
  5.2.2. 스레드를 이용한 GPU 물결 = 100
 5.3 공유메모리와 동기화 = 106
  5.3.1. 내적 = 107
  5.3.2. (올바르지 않은) 내적 최적화 = 108
  5.3.3. 공유메모리 비트맵 = 121
 5.4 요약 = 125
6장. 상수 메모리와 이벤트 = 127
 6.1 이번 장의 목표 = 128
 6.2 상수 메모리 = 128
  6.2.1. 광선 추적(RAY TRACING) 소개 = 129
  6.2.2. GPU의 광선 추적 = 130
  6.2.3. 상수 메모리를 이용한 광선 추적 = 136
  6.2.4. 상수 메모리의 성능 = 139
 6.3 이벤트를 이용한 성능 측정 = 140
  6.3.1. 광선 추적기 성능 측정 = 143
 6.4 요약 = 147
7장. 텍스처 메모리 = 149
 7.1 이번 장의 목표 = 150
 7.2 텍스처 메모리 개요 = 150
 7.3 열전달 시뮬레이션 = 151
  7.3.1. 단순한 난방 모델 = 151
  7.3.2. 온도 갱신을 위한 계산 = 153
  7.3.3. 애니메이션 효과를 적용한 시뮬레이션 = 156
  7.3.4. 텍스처 메모리 이용 = 161
  7.3.5. 2차원 텍스처 메모리 이용 = 165
 7.4 요약 = 171
8장. 그래픽스 상호운용성 = 173
 8.1 이번 장의 목표 = 174
 8.2 그래픽스 상호운용 = 174
 8.3 그래픽스 상호운용을 이용한 GPU 물결 = 182
  8.3.1. GPUANIMBITMAP 구조체 = 183
  8.3.2. 돌아온 GPU 물결 = 188
 8.4 그래픽스 상호운용을 이용한 열전달 = 190
 8.5 DirectX 상호운용성 = 195
 8.6 요약 = 196
9장. 원자 = 199
 9.1 이번 장의 목표 = 200
 9.2 계산 능력 = 200
  9.2.1. NVIDIA GPU들의 계산 능력 = 200
  9.2.2. 최소의 계산 능력을 위한 컴파일 = 203
 9.3 원자적 연산 개요 = 203
 9.4 히스토그램 계산 = 206
  9.4.1. CPU 히스토그램 계산 = 206
  9.4.2. GPU 히스토그램 계산 = 208
 9.5 요약 = 219
10장. 스트림 = 223
 10.1 이번 장의 목표 = 224
 10.2 잠긴 페이지의 호스트 메모리 = 224
 10.3 CUDA 스트림 = 230
 10.4 하나의 CUDA 스트림 이용 = 231
 10.5 다수의 CUDA 스트림 이용 = 237
 10.6 GPU 작업 스케줄링 = 243
 10.7 효과적인 다수의 CUDA 스트림 이용 = 246
 10.8 요약 = 248
11장. 다중 GPU 상의 CUDA C = 251
 11.1 이번 장의 목표 = 252
 11.2 무복사 호스트 메모리 = 252
  11.2.1 무복사 내적 = 253
  11.2.2 무복사 성능 = 260
 11.3 다수의 GPU 이용하기 = 263
 11.4 이식이 가능한 고정 메모리 = 268
 11.5 요약 = 273
12장. 최종 카운트다운 = 277
 12.1 이번 장의 목표 = 278
 12.2 CUDA 툴 = 278
  12.2.1 CUDA 툴킷 = 279
  12.2.2 CUFFT = 279
  12.2.3 CUFFT = 280
  12.2.4 NVIDIA GPU Computing SDK = 280
  12.2.5 NVIDIA 성능 프리미티브 = 281
  12.2.6 CUDA 디버깅 = 282
  12.2.7 CUDA 비주얼 프로파일러 = 284
 12.3 문서로된 자료 = 285
  12.3.1 대규모 병렬 프로세서 프로그래밍 : CUDA를 이용한 실용적 접근 = 286
  12.3.2 CUDA U = 286
  12.3.3 NVIDIA 포럼 = 288
 12.4 코드로된 자료 = 288
  12.4.1 CUDA 데이터 병렬 프리미티브 라이브러리 = 289
  12.4.2 CULAtools = 289
  12.4.3 언어 래퍼(Language Wrappers) = 289
 12.5 요약 = 290
부록. 고급 원자 = 293
 A.1 돌아온 내적 예제 = 294
  A.1.1 원자적 잠금 = 296
  A.1.2 돌아온 내적 예제: 원자적 잠금 = 299
 A.2 해시 테이블 구현 = 303
  A.2.1 해시 테이블 개요 = 304
  A.2.2 CPU 해시 테이블 = 306
  A.2.3 멀티 스레드 해시 테이블 = 312
  A.2.4 GPU 해시 테이블 = 314
  A.2.5 해시 테이블 성능 = 321
 A.3 요약 = 322
찾아보기 = 324

관련분야 신착자료