PARTⅠ OpenCL 언어와 API
Chapter 1 OpenCL에 대한 소개
OpenCL은 무엇인가? 왜 이 책이 여러분에게 필요한가?
매니코어의 미래: 이종 플랫폼
매니코어 세상에서의 소프트웨어
OpenCL의 개념적 토대
OpenCL과 그래픽스
OpenCL의 내용들
임베디드 프로파일
OpenCL 배우기
Chapter 2 HelloWorld: OpenCL 예제
예제 빌드하기
HelloWorld 예제
OpenCL 에러 확인하기
Chapter 3 플랫폼, 문맥, 디바이스
OpenCL 플랫폼
OpenCL 디바이스
OpenCL 문맥
Chapter 3 플랫폼, 문맥, 디바이스
OpenCL 플랫폼
OpenCL 디바이스
OpenCL 문맥
Chapter 4 OpenCL C로 프로그래밍하기
OpenCL C를 사용하여 데이터 병렬성을 지닌 커널 작성하기
스칼라 데이터형
벡터 데이터형
기타 데이터형
파생형
묵시적 형 변환
명시적인 캐스트
명시적 변환
데이터를 다른 형으로 재해석하기
벡터 연산자
지정자
키워드
전처리기 지시자와 매크로
제약
Chapter 5 OpenCL 내장 함수
작업 아이템 함수
수학 함수
정수 함수
공통 함수
기하 함수
관계 함수
벡터 데이터 적재 및 저장 함수
동기화 함수
비동기 복사와 미리 가져오기 함수
원자 함수
기타 벡터 함수
이미지 읽기 및 쓰기 함수
Chapter 6 프로그램과 커널
프로그램과 커널 객체 개요
프로그램 객체
커널 객체
Chapter 7 버퍼와 서브-버퍼
메모리 객체, 버퍼, 서브 버퍼 개요
버퍼와 서브-버퍼 만들기
버퍼와 서브-버퍼 질의하기
버퍼와 서브-버퍼에 대한 읽기, 쓰기, 복사하기
버퍼와 서브-버퍼 매핑하기
Chapter 8 이미지와 샘플러
이미지와 샘플러 객체에 대한 개요
이미지 객체 생성하기
샘플러 객체 생성하기
이미지 작업을 위한 OpenCL C 함수
이미지 객체 전송하기
Chapter 9 이벤트
명령, 큐, 이벤트 개요
이벤트와 명령-큐
이벤트 객체
호스트에서 이벤트 생성하기
호스트에서의 실행에 영향을 주는 이벤트
프로파일링을 위해 이벤트 사용하기
커널 안의 이벤트
OpenCL 밖으로부터의 이벤트
Chapter 10 OpenGL과의 상호연동성
OpenCL/OpenGL 공유에 대한 개요
OpenGL 공유 확장에 대해 질의하기
OpenGL 상호연동성을 위해 OpenCL 문맥 초기화하기
OpenGL 버퍼로부터 OpenCL 버퍼 생성하기
OpenGL 텍스처로부터 OpenCL 이미지 만들기
OpenGL 객체에 대한 정보 질의하기
OpenGL과 OpenCL 사이의 동기화
Chapter 11 Direct3D와의 상호연동성
Direct3D/OpenCL 공유에 대한 개요
Direct3D 호환성을 위해서 OpenCL 문맥을 초기화하기
Direct3D 버퍼와 텍스처로부터 OpenCL 메모리 생성하기
OpenCL에서 Direct3D 객체 획득하고 해제하기
OpenCL에서 Direct3D 처리하기
OpenCL에서 D3D 정점 데이터 처리하기
Chapter 12 C++ 래퍼 API
C++ 래퍼 API 개요
C++ 래퍼 API 예외
C++ 래퍼 API를 사용하는 벡터 덧셈 예제
Chapter 13 OpenCL 임베디드 프로파일
OpenCL 프로파일 개요
64-비트 정수
이미지
내장 원자 함수
최소 단일정밀도 부동소수 계산능력
OpenCL C 프로그램에서 디바이스가 지원하는 프로파일 결정하기
PART Ⅱ OpenCL 사례 연구
Chapter 14 이미지 히스토그램
이미지 히스토그램 계산하기
이미지 히스토그램 병렬화하기
병렬 이미지 히스토그램에 대한 추가적인 최적화
각 채널에 대해 Half-Float 혹은 Float 값으로 히스토그램 계산하기
Chapter 15 Sobel 경계선 검출 필터
Soble 경계선 검출 필터란 무엇인가?
OpenCL 커널로 Sobel 필터 구현하기
Chapter 16 Dijkstra의 단일-소스 최단경로
그래프 알고리즘 병렬화하기
그래프 자료 구조
커널
여러 개의 계산 디바이스 사용하기
Chapter 17 Bullet 물리 SDK를 사용한 옷 시뮬레이션
옷 시뮬레이션에 대한 소개
연체 시뮬레이션하기
CPU에서 시뮬레이션 실행하기
기본적인 GPU 실행을 위해 필요한 변경들
두 단계 집단화
SIMD 계산에 대한 최적화와 지역 메모리
OpenGL 상호연동성 추가하기
Chapter 18 고속 푸리에 변환으로 Ocean 시뮬레이션하기
Ocean 응용 프로그램의 개요
Phillips 스펙트럼 생성하기
OpenCL 이산 푸리에 변환
FFT 커널 자세히 살펴보기
전치 커널 자세히 살펴보기
Chapter 19 광학적 흐름
광학적 흐름 문제 개요
하드웨어 선형 보간을 이용한 서브-픽셀 정확도
텍스처 캐쉬의 적용
지역 메모리 사용하기
초기 종료와 하드웨어 스케줄링
OpenGL 상호연동을 이용한 효율적인 가시화
성능
Chapter 20 PyOpenCL로 OpenCL 사용하기
PyOpenCL 소개
PyImageFilter2D 예제 수행하기
PyImageFilter2D 코드
문맥과 명령-큐 생성
이미지 객체 적재하기
프로그램을 생성하고 빌드하기
커널 인자 설정하고 커널 실행하기
결과 읽기
Chapter 21 OpenCL로 행렬 곱셈하기
기본적인 행렬 곱셈 알고리즘
OpenCL로 직역하기
커널별 작업량을 증가시키기
메모리 이동을 최적화하기: 지역 메모리 사용하기
성능 결과와 원래의 CPU 코드 최적화하기
Chapter 22 희소 행렬-벡터 곱셈
희소 행렬-벡터 곱셈(SpMV) 알고리즘
이 구현에 대한 기술
타일 분할과 패킷화된 희소 행렬 표현법
헤더 구조
타일과 패킷화된 희소 행렬 설계의 고려사항
선택적인 팀 정보
실험에 사용한 하드웨어 디바이스와 결과
추가적인 최적화 대상
Appendix A OpenCL에 대한 요약