로그인회원가입 장바구니마이페이지
kangcom
전체
Home >   >   > 

OpenCL을 이용한 이종 컴퓨팅

 [(반양장본)]
   
지은이 베네딕트 R. 개스터, 리 호위, 데이비드 R. 캐리, 퍼하드 미스트리, 다나 샤 [옮긴이]김성민   |   출판사 제이펍  |   발행일 2014년 05월 16일
 
클릭하시면 큰 도서이미지를 보실 수 있습니다.
판매가 28,000원25,200원 10%
마일리지 5% 1,400원
발행일 2014-05-16
ISBN 8994506918 |  9788994506913
기타정보 국내서 | 388쪽 | Softcover
예상출고일
배송비 무료배송
   
일반
   
이 책의 원서
  Heterogeneous Computing with Opencl: Revised Opencl 1.2 Edition
Elsevier Science Ltd | David R. Kaeli
주의사항 더이상 출간되지 않습니다.
 

병렬 프로그래밍의 표준, OpenCL 교과서!
OpenCL 프레임워크를 이용하여 흥미롭고 유용한 애플리케이션을 개발하자!

《OpenCL을 이용한 이종 컴퓨팅(제2판)》은 OpenCL과 함께 다양한 디바이스 아키텍처를 포함하고 있는 복잡한 시스템을 위한 병렬 프로그래밍에 관해서 설명하고 있다. 다양한 디바이스 아키텍처란 멀티 코어 CPU, GPU, 그리고 AMD의 퓨전 기술처럼 완전히 통합된 가속 프로세싱 유닛(APU) 등이다. OpenCL은 여러 플랫폼에서 동작하고 다양한 제조사의 지원을 받도록 설계되었기 때문에 이종 환경의 미래를 위해 더욱 효율적인 프로그래밍이 가능하다.

병렬 컴퓨팅과 OpenCL 커뮤니티 리더들에 의해 쓰인 이 책은 기본적인 병렬 알고리즘의 영역을 다루기 위해 직접 실행해볼 수 있는 OpenCL 경험들을 제공한다. 저자는 메모리 공간, 최적화 기술, 그래픽 상호작용, 확장, 그리고 디버깅과 프로파일링까지 다룬다. 개정판에 추가된 다양한 케이스 스터디와 예제는 고성능 알고리즘, 이종 시스템에서의 작업 분배, 임베디드된 도메인 특정 언어 등에 대해 설명하고 있다.

이 책의 특징은 다음과 같다.
⚫ 이 개정판은 새로운 아키텍처와 기능을 포함하여 OpenCL 1.2의 최신 내용 대부분을 다루고 있다.
⚫ 새로운 장은 이미지 처리, 데이터 관리, 그리고 C/C++뿐만 아니라 다른 언어를 사용하여 OpenCL을 활용하는 내용도 다룬다.
⚫ OpenCL을 사용하여 병렬 프로그래밍을 배우기 위한 원리와 전략에 대해서 설명한다. 네 개의 추상 모델을 이해하는 것부터 완벽한 애플리케이션을 테스트하고 디버깅하는 것까지 포함된다.
⚫ 이미지 프로세싱, 웹 플러그인, 파티클 시뮬레이션, 비디오 에디팅, 성능 최적화 등을 다룬다.
⚫ 자세한 예제와 함께 추가적인 온라인 연습문제, 그리고 강의 지원을 위해 강사용 자료들도 제공한다.
⚫ 기본적인 프로그래밍 테크닉을 다루고 있으며, 다양한 하드웨어 플랫폼을 위한 OpenCL 확장의 예를 보여주는 예제와 케이스 스터디를 포함하고 있다.


[책속으로]
OpenCL의 사양과 이 책에서 사용된 코드를 다운로드받아 공부하면 OpenCL에 대해 많은 것을 배울 수 있을 것이다. 여러분이 직접 코드를 작성하기 전에 미리 경험해본 선구자들의 발자취를 보면서 OpenCL 표준의 중요한 기능이 무엇인지를 배웠으면 한다. 개발자들은 예제를 통해 익힐 수 있으며, 이 책은 간단한 예제(벡터 덧셈)부터 복잡한 예제(이미지 분석)까지 단계별 예제를 제공한다. 또한, 여러분이 새로운 프로그래밍 모델에 흥미를 가질 수 있고, 이 분야에서 권위자가 될 수 있도록 하는 기본기를 단단하게 다져줄 것이다.
_XIII

이제 동시성과 병렬 처리 모델에 대해 알아보도록 하자. OpenCL을 사용하여 개발하는 애플리케이션을 병렬 플랫폼에 매핑하려고 할 때는 올바른 모델을 선택해야 한다. 이후에 나오는 모델 모두가 OpenCL을 지원하지만, 기본 하드웨어는 실제 사용되는 모델에 따라 제한적이다.
_9

개발자가 가장 쉽게 코드를 작성하는 방법은 순차적으로 동작하는 소프트웨어를 만드는 것이다. 이 방법은 하나의 동작을 수행하고 완료한 후 다른 동작을 수행하는 방법이다. 그래서 개발자들은 병렬 코드를 작성하는 것이 더 어렵다고 생각한다. 이러한 사실은 그래픽스에서 일반적으로 사용하는 제한적인 SIMD나 벡터 병렬화를 사용하는 경우에도 마찬가지다.
_52

그림 6.6은 AMD FX8150 CPU와 AMD Radeon HD7970 GPU가 포함된 시스템의 메모리 구조의 계략도다. 이런 배열의 CPU 캐시 구조는 단일 메모리 스트림의 레이턴시를 줄이기 위해 배치되어 있다. 중요한 레이턴시는 스트림을 멈추게 하여 실행 효율성을 감소시킨다. GPU 코어를 설계할 때는 레이턴시 비용 측면에서 처리량을 극대화하기 위해 스레딩과 와이드(wide) SIMD를 사용하도록 설계한다. 따라서 메모리 시스템도 약간의 레이턴시 비용을 가지면서 처리량을 맞추도록 대역폭을 최대화하여 설계한다.
_163

OpenCL에서 감소를 병렬화하는 일반적인 방법은 입력 데이터 세트를 GPU의 서로 다른 워크그룹으로 나누는 것이다. 각 워크그룹은 하나의 항목에 대한 계산을 담당한다. 워크그룹에서 감소는 여러 단계로 실행된다. 각 단계에 따라 워크아이템은 한 스텝씩 한 항목과 이웃 항목을 덧셈한다. 각 스텝은 각 단계를 거치면서 점점 증가하고, 워크아이템의 수는 점차 감소하게 된다. 이러한 감소 데이터 세트의 방법은 그림 7.6과 같이 감소 트리(reduction tree)로 잘 알려져 있다.
_198

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

저자 : 베네딕트 R. 개스터

저자 베네딕트 R. 개스터(Benedict R. Gaster)는 차세대 이종 프로세서를 위한 프로그래밍 모델을 다루는 소프트웨어 아키텍트다. 특별히 GPU와 GPU 같은 엑셀러레이터를 포함한 프로세서에 대한 병렬 프로그래밍의 상위 레벨 추상화에 대해 관심이 많다.



저자 : 리 호위

저자 리 호위(Lee Howes)는 지난 3년 반을 AMD에서 일해 왔으며, 주로 GPU 컴퓨팅과 그래픽스 프로그래밍과 관련된 토픽에서 일했다. 리는 현재 미래의 이종 컴퓨팅에 대한 프로그래밍 모델에 관심이 많다.



저자 : 데이비드 R. 캐리

저자 데이비드 R. 캐리(David R. Kaeli)는 현재 노스이스턴 대학의 ECE 교수이자 공과대학의 학장을 맡고 있다. 또한, NUCAR(the Northeastern University Computer Architecture Research Laboratory)를 이끌고 있기도 하다.



저자 : 퍼하드 미스트리

저자 퍼하드 미스트리(Perhaad Mistry)는 노스이스턴 대학의 박사과정에 있다. NUCAR(the Northeastern University Computer Architecture Research Laboratory)의 멤버이며, 데이비드 캐리 박사가 그의 지도교수다.



저자 : 다나 샤

저자 다나 샤(Dana Schaa)는 캘리포니아 폴리텍 스테이트 대학의 컴퓨터 엔지니어링 분야에서 학사 학위를 받았으며, 석사는 노스이스턴 대학에서 전자 및 컴퓨터 공학으로 받았다. 현재 박사과정 중이다. 병렬 프로그래밍 모델과 추상화, 특히 GPU 아키텍처 분야에 관심이 많다.




역자 : 김성민

저자 김성민은 한국에서 컴퓨터 공학을 전공하고 벤처에서 약 8년 동안 일하다가 좀 더 심오한 공부를 하고자 유학길에 올랐다. 미국에서 컴퓨터 공학으로 박사학위를 받았고, 현재 실리콘밸리에 있는 한 벤처에서 시스템 아키텍트로 근무 중이다. 최근에는 이종 컴퓨팅 관련 연구에 매진하고 있으며, 샌프란시스코에서 아내와 두 딸과 함께 살고 있다.


등록된 서평이 없습니다.
 
전체평균(0)
회원평점   회원서평수 0
제이펍 출판사의 신간
유튜브 영상 편집을 위한 파이널 컷 프로 X
Sera(정세영) 저
26,820원
(10%↓+5%)
 
이메일주소수집거부