목차 일부
추천의 글 ... ⅳ
감사의 글 ... ⅶ
저자 소개 ... ⅸ
역자의 글 ... xi
역자 소개 ... xiii
서문 ... xxi
PARTⅠ OpenCL 언어와 API
CHAPTER 1 OpenCL에 대한 소개 ... 3
OpenCL은 무엇인가? 왜 이 책이 여러분에게 필요한가? ... 3
매니코어의 미래: 이종 플랫폼 ......
더보기
목차 전체
추천의 글 ... ⅳ
감사의 글 ... ⅶ
저자 소개 ... ⅸ
역자의 글 ... xi
역자 소개 ... xiii
서문 ... xxi
PARTⅠ OpenCL 언어와 API
CHAPTER 1 OpenCL에 대한 소개 ... 3
OpenCL은 무엇인가? 왜 이 책이 여러분에게 필요한가? ... 3
매니코어의 미래: 이종 플랫폼 ... 4
매니코어 세상에서의 소프트웨어 ... 7
OpenCL의 개념적 토대 ... 11
OpenCL과 그래픽스 ... 29
OpenCL의 내용들 ... 30
임베디드 프로파일 ... 35
OpenCL 배우기 ... 36
CHAPTER 2 HelloWorld: OpenCL 예제 ... 39
예제 빌드하기 ... 40
HelloWorld 예제 ... 46
OpenCL 에러 확인하기 ... 57
CHAPTER 3 플랫폼, 문맥, 디바이스 ... 61
OpenCL 플랫폼 ... 61
OpenCL 디바이스 ... 66
OpenCL 문맥 ... 76
CHAPTER 4 OpenCL C로 프로그래밍하기 ... 91
OpenCL C를 사용하여 데이터 병렬성을 지닌 커널 작성하기 ... 91
스칼라 데이터형 ... 93
벡터 데이터형 ... 96
기타 데이터형 ... 101
파생형 ... 102
묵시적 형 변환 ... 103
명시적인 캐스트 ... 108
명시적 변환 ... 109
데이터를 다른 형으로 재해석하기 ... 113
벡터 연산자 ... 116
지정자 ... 125
키워드 ... 133
전처리기 지시자와 매크로 ... 133
제약 ... 138
CHAPTER 5 OpenCL 내장 함수 ... 141
작업 아이템 함수 ... 142
수학 함수 ... 144
정수 함수 ... 156
공통 함수 ... 158
기하 함수 ... 160
관계 함수 ... 162
벡터 데이터 적재 및 저장 함수 ... 165
동기화 함수 ... 174
비동기 복사와 미리 가져오기 함수 ... 175
원자 함수 ... 178
기타 벡터 함수 ... 182
이미지 읽기 및 쓰기 함수 ... 183
CHAPTER 6 프로그램과 커널 ... 195
프로그램과 커널 객체 개요 ... 195
프로그램 객체 ... 196
커널 객체 ... 213
CHAPTER 7 버퍼와 서브-버퍼 ... 221
메모리 객체, 버퍼, 서브 버퍼 개요 ... 222
버퍼와 서브-버퍼 만들기 ... 223
버퍼와 서브-버퍼 질의하기 ... 230
버퍼와 서브-버퍼에 대한 읽기, 쓰기, 복사하기 ... 232
버퍼와 서브-버퍼 매핑하기 ... 248
CHAPTER 8 이미지와 샘플러 ... 253
이미지와 샘플러 객체에 대한 개요 ... 253
이미지 객체 생성하기 ... 255
샘플러 객체 생성하기 ... 262
이미지 작업을 위한 OpenCL C 함수 ... 265
이미지 객체 전송하기 ... 269
CHAPTER 9 이벤트 ... 279
명령, 큐, 이벤트 개요 ... 280
이벤트와 명령-큐 ... 281
이벤트 객체 ... 287
호스트에서 이벤트 생성하기 ... 289
호스트에서의 실행에 영향을 주는 이벤트 ... 291
프로파일링을 위해 이벤트 사용하기 ... 295
커널 안의 이벤트 ... 300
OpenCL 밖으로부터의 이벤트 ... 301
CHAPTER 10 OpenGL과의 상호연동성 ... 303
OpenCL/OpenGL 공유에 대한 개요 ... 303
OpenGL 공유 확장에 대해 질의하기 ... 304
OpenGL 상호연동성을 위해 OpenCL 문맥 초기화하기 ... 306
OpenGL 버퍼로부터 OpenCL 버퍼 생성하기 ... 307
OpenGL 텍스처로부터 OpenCL 이미지 만들기 ... 311
OpenGL 객체에 대한 정보 질의하기 ... 314
OpenGL과 OpenCL 사이의 동기화 ... 315
CHAPTER 11 Direct3D와의 상호연동성 ... 319
Direct3D/OpenCL 공유에 대한 개요 ... 319
Direct3D 호환성을 위해서 OpenCL 문맥을 초기화하기 ... 320
Direct3D 버퍼와 텍스처로부터 OpenCL 메모리 생성하기 ... 323
OpenCL에서 Direct3D 객체 획득하고 해제하기 ... 327
OpenCL에서 Direct3D 처리하기 ... 329
OpenCL에서 D3D 정점 데이터 처리하기 ... 332
CHAPTER 12 C++ 래퍼 API ... 335
C++ 래퍼 API 개요 ... 335
C++ 래퍼 API 예외 ... 337
C++ 래퍼 API를 사용하는 벡터 덧셈 예제 ... 340
CHAPTER 13 OpenCL 임베디드 프로파일 ... 349
OpenCL 프로파일 개요 ... 349
64-비트 정수 ... 351
이미지 ... 352
내장 원자 함수 ... 353
최소 단일정밀도 부동소수 계산능력 ... 353
OpenCL C 프로그램에서 디바이스가 지원하는 프로파일 결정하기 ... 355
PART Ⅱ OpenCL 사례 연구
CHAPTER 14 이미지 히스토그램 ... 361
이미지 히스토그램 계산하기 ... 361
이미지 히스토그램 병렬화하기 ... 363
병렬 이미지 히스토그램에 대한 추가적인 최적화 ... 368
각 채널에 대해 Half-Float 혹은 Float 값으로 히스토그램 계산하기 ... 371
CHAPTER 15 Sobel 경계선 검출 필터 ... 375
Soble 경계선 검출 필터란 무엇인가? ... 375
OpenCL 커널로 Sobel 필터 구현하기 ... 376
CHAPTER 16 Dijkstra의 단일-소스 최단경로 그래프 알고리즘 병렬화하기 ... 379
그래프 자료 구조 ... 380
커널 ... 382
여러 개의 계산 디바이스 사용하기 ... 385
CHAPTER 17 Bullet 물리 SDK를 사용한 옷 시뮬레이션 ... 393
옷 시뮬레이션에 대한 소개 ... 393
연체 시뮬레이션하기 ... 397
CPU에서 시뮬레이션 실행하기 ... 399
기본적인 GPU 실행을 위해 필요한 변경들 ... 400
두 단계 집단화 ... 406
SIMD 계산에 대한 최적화와 지역 메모리 ... 409
OpenGL 상호연동성 추가하기 ... 413
CHAPTER 18 고속 푸리에 변환으로 Ocean 시뮬레이션하기 ... 417
Ocean 응용 프로그램의 개요 ... 418
Phillips 스펙트럼 생성하기 ... 451
OpenCL 이산 푸리에 변환 ... 425
FFT 커널 자세히 살펴보기 ... 431
전치 커널 자세히 살펴보기 ... 434
CHAPTER 19 광학적 흐름 ... 437
광학적 흐름 문제 개요 ... 437
하드웨어 선형 보간을 이용한 서브-픽셀 정확도 ... 447
텍스처 캐쉬의 적용 ... 448
지역 메모리 사용하기 ... 448
초기 종료와 하드웨어 스케줄링 ... 450
OpenGL 상호연동을 이용한 효율적인 가시화 ... 451
성능 ... 452
CHAPTER 20 PyOpenCL로 OpenCL 사용하기 ... 455
PyOpenCL 소개 ... 455
PyImageFilter2D 예제 수행하기 ... 456
PyImageFilter2D 코드 ... 457
문맥과 명령-큐 생성 ... 460
이미지 객체 적재하기 ... 462
프로그램을 생성하고 빌드하기 ... 463
커널 인자 설정하고 커널 실행하기 ... 463
결과 읽기 ... 465
CHAPTER 21 OpenCL로 행렬 곱셈하기 ... 467
기본적인 행렬 곱셈 알고리즘 ... 467
OpenCL로 직역하기 ... 469
커널별 작업량을 증가시키기 ... 474
메모리 이동을 최적화하기: 지역 메모리 사용하기 ... 477
성능 결과와 원래의 CPU 코드 최적화하기 ... 479
CHAPTER 22 희소 행렬-벡터 곱셈 ... 483
희소 행렬-벡터 곱셈(SpMV) 알고리즘 ... 484
이 구현에 대한 기술 ... 486
타일 분할과 패킷화된 희소 행렬 표현법 ... 487
헤더 구조 ... 491
타일과 패킷화된 희소 행렬 설계의 고려사항 ... 492
선택적인 팀 정보 ... 492
실험에 사용한 하드웨어 디바이스와 결과 ... 493
추가적인 최적화 대상 ... 505
APPENDIX A OpenCL에 대한 요약 ... 507
찾아보기 ... 544
더보기 닫기