책 이미지

책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 개발/방법론 > 프로그래밍 기초/개발 방법론
· ISBN : 9788994506913
· 쪽수 : 388쪽
· 출판일 : 2014-05-16
책 소개
목차
1장 병렬 프로그래밍 소개 _ 1
소개 _ 1
OpenCL _ 2
이 책의 목적 _ 3
병렬화란? _ 3
동시성과 병렬 프로그래밍 모델 _ 9
책의 구성 _ 14
2장 OpenCL 소개 _ 19
소개 _ 19
플랫폼과 디바이스 _ 25
실행 환경 _ 28
메모리 모델 _ 38
벡터 덧셈의 전체 소스 코드 예제 _ 42
C++ 래퍼를 사용한 벡터 덧셈 _ 45
요약 _ 47
3장 OpenCL 디바이스 아키텍처 _ 49
소개 _ 49
하드웨어 트레이드 오프 _ 50
아키텍처 디자인 공간 _ 68
요약 _ 80
4장 OpenCL 기본 예제 _ 83
소개 _ 83
예제 프로그램 _ 84
OpenCL 호스트 애플리케이션 컴파일하기 _ 104
요약 _ 104
5장 OpenCL의 동시 실행과 실행 모델에 대한 이해 _ 107
소개 _ 107
커널, 워크아이템, 워크그룹과 실행 도메인 _ 107
OpenCL 동기화: 커널, 펜스, 그리고 베리어 _ 111
큐잉과 글로벌 동기화 _ 115
호스트 측 메모리 모델 _ 133
디바이스 측면의 메모리 모델 _ 141
요약 _ 151
6장 CPU/GPU에서의 OpenCL 구현에 대한 해부 _ 153
소개 _ 153
AMD 불도저 CPU에서의 OpenCL _ 153
AMD의 RADEON HD7970 GPU에서의 OpenCL _ 160
OpenCL에서 메모리 성능 고려 _ 173
요약 _ 185
7장 데이터 관리 _ 187
메모리 관리 _ 187
분리된 환경에서 데이터 전송 _ 190
공유 메모리 환경에서 데이터 저장 _ 193
예제 애플리케이션 ? 워크그룹 감소 _ 197
8장 OpenCL 케이스 스터디: 콘볼루션 _ 205
소개 _ 205
콘볼루션 커널 _ 206
결론 _ 217
코드 리스팅 _ 218
9장 OpenCL 케이스 스터디: 히스토그램 _ 229
소개 _ 229
워크그룹의 수 선택 _ 230
최적의 워크그룹 크기 선택 _ 231
글로벌 메모리 데이터 액세스 패턴의 최적화 _ 232
어토믹을 사용한 로컬 히스토그램의 성능 향상 _ 235
로컬 메모리 액세스의 최적화 _ 236
로컬 히스토그램 감소 _ 239
글로벌 감소 _ 239
전체 커널 코드 _ 240
성능과 요약 _ 242
10장 혼합 파티클 시뮬레이션 _ 245
소개 _ 245
연산에 대한 소개 _ 246
GPU 구현 _ 248
CPU 구현 _ 252
로드 밸런싱 _ 253
성능 및 요약 _ 254
동일 그리드 생성을 위한 커널 _ 256
시뮬레이션을 위한 커널 _ 257
11장 OpenCL 확장 기능 _ 261
소개 _ 261
확장 메커니즘 소개 _ 261
디바이스 분할 _ 266
배정밀도 _ 277
12장 다른 프로그래밍 언어 지원: OpenCL 플러그인 _ 287
소개 _ 287
C와 C++ 이후 _ 287
하스켈의 OpenCL _ 290
요약 _ 299
13장 OpenCL 프로파일링과 디버깅 _ 301
소개 _ 301
이벤트를 이용한 프로파일링 _ 303
AMD 가속 병렬 프로세싱 프로파일러 _ 305
AMD 가속 병렬 프로세싱 커널애널라이저 _ 312
AMD APP Profiler의 사용 방법 _ 314
OpenCL 애플리케이션의 디버깅 _ 319
GDEBUGGER에 대한 개요 _ 320
AMD PRINTF 확장 _ 324
요약 _ 324
14장 이미지 분석 애플리케이션의 성능 최적화 _ 325
소개 _ 325
알고리즘 설명 _ 326
멀티스레드 CPU 구현을 OpenCL로 이동 _ 330
성능 최적화 _ 335
소비전력과 퍼포먼스 분석 _ 352
요약 _ 353
저자소개
책속에서
OpenCL의 사양과 이 책에서 사용된 코드를 다운로드받아 공부하면 OpenCL에 대해 많은 것을 배울 수 있을 것이다. 여러분이 직접 코드를 작성하기 전에 미리 경험해본 선구자들의 발자취를 보면서 OpenCL 표준의 중요한 기능이 무엇인지를 배웠으면 한다. 개발자들은 예제를 통해 익힐 수 있으며, 이 책은 간단한 예제(벡터 덧셈)부터 복잡한 예제(이미지 분석)까지 단계별 예제를 제공한다. 또한, 여러분이 새로운 프로그래밍 모델에 흥미를 가질 수 있고, 이 분야에서 권위자가 될 수 있도록 하는 기본기를 단단하게 다져줄 것이다.
이제 동시성과 병렬 처리 모델에 대해 알아보도록 하자. OpenCL을 사용하여 개발하는 애플리케이션을 병렬 플랫폼에 매핑하려고 할 때는 올바른 모델을 선택해야 한다. 이후에 나오는 모델 모두가 OpenCL을 지원하지만, 기본 하드웨어는 실제 사용되는 모델에 따라 제한적이다.
개발자가 가장 쉽게 코드를 작성하는 방법은 순차적으로 동작하는 소프트웨어를 만드는 것이다. 이 방법은 하나의 동작을 수행하고 완료한 후 다른 동작을 수행하는 방법이다. 그래서 개발자들은 병렬 코드를 작성하는 것이 더 어렵다고 생각한다. 이러한 사실은 그래픽스에서 일반적으로 사용하는 제한적인 SIMD나 벡터 병렬화를 사용하는 경우에도 마찬가지다.