이미 소장하고 있다면 판매해 보세요.
|
Part Ⅰ. Intel Parallel Studio 활용
1. 급변하는 개발 트렌드의 중심, 병렬 프로그래밍 ● 무어의 법칙과 멀티코어● 개발자가 무슨 죄인이냐?● 멀티코어 시대의 해법, “병렬 프로그래밍”● 감사합니다. 병렬 프로그래밍 툴 ● 멀티코어 CPU의 구조와 원리● 병렬 프로그래밍을 배우는 보다 스마트한 방법2. Parallel Studio 개요 및 설치법 ● Intel Parallel Studio 개요● Intel Parallel Studio 제품 설치● Visual Studio 2008 vs Visual Studio 2010 통합 환경의 차이점● Intel Parallel Studio 활용 병렬화 과정 프로젝트3. Intel 컴파일러를 이용한 병렬화 및 튜닝● 암달(Amdahl)의 법칙 ● 측정 시간과 부하 조정● 시스템 설정 및 성능 측정● Intel 컴파일러의 특징 ● Intel 컴파일러 스위치 사용법● 병렬화 대상 확인 ● 병렬화 방법 ● 베타 제어 방법 ● 코어와 스레드의 관계 ● Parallel Composer의 병렬화 기능 ● 자동 병렬화 ● SIMD(single instruction, multiple data) 활용법4. Parallel Debugger 확장 기능을 이용한 병렬 코드 디버깅● 스레드 간 데이터 공유 상태 조사● 프로그램의 재진입 탐지● OpenMP 디버깅 ● 병렬 영역을 순차 실행하기● SIMD 확인 5. 잠재적 버그 탐색 ● 잠재적 버그란? ● Parallel Inspector 소개● 멀티 스레딩에서 발생할 수 있는 문제● 디버깅 예제 (원주율 구하기)● 메모리 관련 문제 6. 성능 튜닝 ● 튜닝이란? ● 핫스팟을 이용하는 방법● 멀티 스레딩 효율성 검증 - Concurrency Level● 멀티 스레딩 효율성 저하 검증 - 잠금과 대기 Part Ⅱ. TBB를 이용한 병렬화1. TBB 이해 ● TBB란 무엇인가? ● 조정성 (scalability) ● 태스크 (task) ● 태스크 스케줄러 이해 ● TBB 기술 구조 ● 루프 병렬화의 이해 ● 성능 실험 결과 2. TBB 기본 사용법 ● TBB 설치 ● 개발환경 설정 ● TBB 초기화 ● 타이밍 ● TBB의 알려진 문제점 3. 알고리즘 사용법 ● parallel_for ● parallel_reduce ● parallel_while ● parallel_sort ● 중첩 병렬화 4. 동시 컨테이너 ● 동시성이 있는 queue 컨테이너● 동시성이 있는 vector 컨테이너● 동시성이 있는 map 컨테이너5. 메모리 할당 ● 메모리 할당 작업 시 발생하는 문제● 메모리 할당자 ● new와 delete 대체하기6. 태스크 스케줄러 활용 ● 피보나치 수열 계산을 통한 태스크 스케줄러 활용법 이해● 태스크 스케줄링 개요 7. TBB를 이용한 Vision 영상 처리 예제● Vision 영상 처리 프로그램 소개● TBB 적용 결과 ● 사전 준비 설치 (OpenCV 2.2 및 CMake 2.8)● 예제 프로젝트 생성 및 개발환경 설정● 영상 처리 로직 이해 ● 영상 처리 클래스 추가● 화면 디자인 및 이벤트 처리 함수 추가● 병렬화 작업 ● 코드 완성 및 테스트 Part Ⅲ. ArBB를 이용한 병렬화1. 배경 ● 병렬 프로세서 분류 ● 벡터 처리 ● ArBB ● 병렬화 표현 ● 데이터 병렬화 프로그래밍 모델 비교2. 개발 환경 ● ArBB 설치 ● ArBB 설치 확인 ● Visual Studio 디버그 환경 설치● ArBB 프로젝트 환경 설정● ArBB 프로젝트 디버그● 실행 최적화 수준 3. 스칼라 타입 ● 스칼라 클래스 ● C/C++ 데이터 변환 ● 제어 구문 4. 컨테이너 타입 ● 컨테이너 타입 유형 ● arbb::dense 컨테이너 타입● arbb::nested 컨테이너 타입● 반복자 ● 데이터 접근하기 ● 기본 값 채우기 ● arbb::bind 함수 5. 함수 호출 메커니즘 ● 사용자 정의 함수 ● arbb:capture과 arbb::call 함수 차이점● 클로저 활용 ● 캡처 부작용 ● arbb::value 함수 사용 제한● arbb::map 함수 ● 가변/고정 매개변수 ● 벡터 프로세싱과 스칼라 프로세싱 비교6. 시간 측정 ● arbb::scoped_timer 클래스7. 예외 처리 ● 런타임 예외 8. 만델브로 집합 예제 ● 개요 ● 루프 전이 의존성 확인● 성능 향상 결과 9. 행렬-벡터 곱셈 예제 ● 개요 ● 행렬-벡터 곱셈 로직 ● 성능 향상 결과 Part Ⅳ. Cilk Plus 소개 1. Cilk Plus 이해 ● Cilk Plus란? ● 기술 구조 ● Cilk Plus를 이용하여 C++ 직렬 프로그램을 병렬화하는 절차● 성능 향상 사례 소개 2. Cilk Plus 설치 및 샘플 테스트● 평가판 다운로드 ● 샘플 프로그램 테스트 및 개발 환경 설정3. 키워드를 통한 태스크 병렬화● 병렬화 예제를 통한 기초 이해● cilk_spawn ● cilk_sync ● cilk_for ● cilk_for와 직렬 루프 스포닝 방식 비교● Grain 크기 4. 배열 표기법을 통한 데이터 병렬화● 개요 ● 영역 연산자 Part Ⅴ. OpenMP를 이용한 병렬화1. OpenMP 개요 2. OpenMP 기본 사용법 ● 필수 요건 ● 병렬 영역과 스레드 수 ● OpenMP 병렬 영역의 범위● 데이터 유효범위와 데이터 속성● 작업분할 (Work Sharing)● 동기화 ● 태스크 제어 3. OpenMP 지시문 ● OpenMP 표준 지시문 ● 인텔 컴파일러 확장 지시문 (OpenMP 3.0)4. OpenMP API와 환경 변수● 환경 변수 (Data Environment)● 런타임 API ● 잠금함수 (Lock Functions)● 타임루틴 (timing Routines)● 인텔 컴파일러가 제공하는 런타임 함수5. OpenMP 활용 ● for루프 구문을 이용하는 것의 주의점● 병렬 영역의 중첩 처리● 태스크 제어 ● Sections 활용 Part Ⅵ. 병렬 패턴 라이브러리를 이용한 병렬화1. 동시성 런타임 ● 병렬성 ● 환경 ● 동시성 런타임의 구조 ● 스레드 ● 특징 2, 병렬 패턴 라이브러리(Parallel Pattern Library)● 태스크 ● 태스크 그룹을 이용한 병렬처리● 태스크 병렬화 ● 루프 병렬화 ● 병렬 컨테이너 ● 병렬 객체 Part Ⅶ. 부록 1. OpenMP 데이터 일람표2. IPP 활용법 ● 인텔 IPP 프로젝트를 통합● MSVS 2010에서 사용 3. Quick-Reference Guide to Optimization with Intel compolers● 일반적인 최적화 옵션 ● 병렬화 옵션 ● 프로세서 전용 옵션 ● 프로시저간 최적화(IPO), 옵션과 프로파일에 근거한 최적화(PGO)● 부동소수점 연산 최적화● 세부적인 튜닝 (모든 프로세서) |
|
스마트한 기획과 번뜩이는 아이디어, 급변하는 트렌드 속에서 대세를 판단할 수 있는 날카로운 시각과 끊임없는 신기술의 습득. 이 모든 게 요즘 개발자에게 요구되는 덕목이다. 이렇듯 할 일이 많아진 개발자들에게 병렬 프로그래밍은 ‘구세주’다. 분야를 가리지 않고 병렬 프로그래밍의 중요성은 높아지지만, 프로젝트에 어떤 병렬 프로그래밍 툴과 기법들을 적용할지가 고민거리다. 이 책은 인텔 패러럴스튜디오의 활용법과 TBB, ArBB, Cilk Plus(실크 플러스)는 물론 다양한 기기에 적용할 수 있는 병렬 프로그래밍 API인 OpenMP와 PPL(병렬 패턴 라이브러리)를 이용한 병렬화에 이르기까지 병렬화에 필요한 다양한 기법들을 제시한다. 중요성에 비해 좀처럼 정보가 부족했던 병렬 프로그래밍에 대한 모든 정보가 이 책 한 권에 담겨있으며, 이론에서 실전 개발에 이르기까지 병렬 프로그래밍의 모든 비법을 이 책 한 권이면 완전 정복할 수 있다.
각 장의 내용을 살펴보면 다음과 같다. Part 01 | Intel Parallel Studio 활용 Intel Parallel Studio 2011을 이용한 보다 손쉬운 병렬 프로그래밍 개발에 대한 내용들을 담고 있다. Parallel Studio는 Windows OS 환경에서 Microsoft Visual Studio와 통합된 환경에서 개발할 수 있어 기존에 Visual Studio를 사용하는 개발자라면 환경의 변화 없이 병렬 프로그램을 활용할 수 있을 것이다. Intel Parallel Studio를 구성하는 Intel Parallel Composer, Intel Parallel Inspector, Intel Parallel Amplifier를 이용한 병렬화 방법론과 제품의 활용법에 대해 설명하고 있어 이번 파트를 통해 병렬 프로그래밍의 기초를 닦을 수 있다. Part 02 | TBB를 이용한 병렬화 멀티코어 프로세서의 대중화로 개인용 PC에서도 병렬 프로그래밍을 사용할 수 있게 됐다. 물론 코어 개수가 늘어난다고 기존 프로그램의 성능이 저절로 증가하는 것은 아니기 때문에 멀티코어에서 동작할 수 있는 방식으로 프로그램을 작성해야 한다. 여기서 발생하는 문제가 ‘병렬화 기술을 실무에 쉽게 도입할 수 있냐?’는 것이다. 병렬 프로그래밍은 스레드를 직접 생성/관리/동기화해야 하는 복잡함이 난관이다. 2006년 인텔이 제시한 스레딩 빌딩 블록(Threading Building Blocks, 이하 TBB)이 이에 대한 해결책이다. 이번 파트에서는 TBB는 무엇이며, 실무에서 실제로 어떤 도움을 줄 수 있는지를 확인해본다. Part 03 | ArBB를 이용한 병렬화 CUDA(Compute Unified Device Architecture)와 OpenCL(Open Computing Language) 등 벡터 처리 기술이 개발자들 사이에 확산되고 있다. 그러나 기존 CUDA와 OpenCL 라이브러리는 추상화 수준이 낮기 때문에 개발자가 데이터 병렬화를 위해 로직을 개발해야 하며, 병렬화를 위한 시스템 요소까지 모두 관리해야 한다는 한계가 있다. 뿐만 아니라 “결정적(deterministic) 프로그래밍”을 지원하지 않아 병렬화 과정 중 발생할 수 있는 데이터 레이스(data race)와 데드락(deadlock)과 같은 문제를 직접 해결해야 한다. 이런 문제점을 극복하고자 최근 인텔이 출시한 ArBB를 통한 병렬화 과정을 살펴본다. Part 04 | Cilk Plus 소개 TBB 및 ArBB와 함께 인텔의 Parallel Building Blocks 삼총사 중 하나인 Cilk Plus가 무엇인지 이해하는데 목적이 있다. 간단한 방법으로 루프나 함수 호출을 병렬화할 수 있는 C/C++용 언어 확장팩인 Cilk Plus의 설치와 사용법을 통해 실무에 적용 가능할지 기술적 판단을 내릴 수 있을 것이다. Part 05 | OpenMP를 이용한 병렬화 이번 장은 병렬화에서 다른 라이브러리보다 쉽게 배울 수 있는 OpenMP에 대한 내용이다. OpenMP는 Fortran, C/C++ 유저뿐 아니라 Windows, Linux, Unix 환경을 모두 지원한다. 다양한 구조에 적용해 어려운 점이 있지만 다른 병렬 라이브러리보다 쉽게 적용할 수 있다. 이번 파트에서는 OpenMP의 기본적인 개요와 함께 기본 사용법은 물론 OpenMP의 지시문과 OpenMP가 제공하는 작업분할, 동기화, 데이터 환경에 대한 지시문을 알아본다. 그 후 OpenMP API와 환경변수를 이용한 좀 더 유연한 병렬화와 OpenMP를 좀 더 최적화해 사용하는 방법과 주의사항에 대해서 알아본다. Part 06 | 병렬 패턴 라이브러리를 이용한 병렬화 이번 파트에서는 동시성 런타임의 구성요소 중 애플리케이션과의 인터페이스에 해당하는 콤포넌트 중 병렬 패턴 라이브러리(PPL)를 통해 병렬화 프로그래밍을 구현하는 방법을 알아본다. Part 07 | 부록 각 파트는 이론적인 설명, 설치 과정 및 방법은 물론 예제를 통해 실전개발에 도움을 줄 수 있게 구성돼 있다. 다양한 그림, 표, 리스트는 독자들의 이해를 돕기에 충분하며, 파트 01에서 07까지 완성한다면 병렬 프로그래밍이 가능한 개발자로 거듭날 수 있을 것이다. 또한 인텔 패러럴스?디오, TBB, ArBB, Cilk Plus, OpenMP, PPL에 이르기까지 다양한 라이브러리를 이론, 실무에 걸쳐 설명하고 있다. 이 책이 실전개발을 위한 길라잡이가 돼 줄 것이다. |