책 이미지
책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 언어 > C++
· ISBN : 9788901133324
· 쪽수 : 512쪽
책 소개
목차
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)
● 부동소수점 연산 최적화
● 세부적인 튜닝 (모든 프로세서)