제 이펍 의 참 똑똑 한 2 비트 책 이야기 : : 입문 자 를 위한 병렬 프로그래밍 
 제 이펍 의 도서 | Posted by 제 이펍 2015 . 02 . 26 19 : 11 
 입문 자 를 위한 병렬 프로그래밍 
 MPI , Pthreads , 그리고 OpenMP 를 이용 한 병렬 프로그래밍 가이드 ! 
 효율 적 병렬 프로그래밍 에 관한 완벽 한 튜토리얼 ! 
 샌프란시스코 대학 을 비롯 한 세계 유명 대학 교재 로 선정 ! 
 원 서명 An Introduction to Parallel Programming ( 원서 ISBN : 9780123742605 ) 
 저 자명 피터 파체코 ( Peter Pacheco ) 
 출판 일 2015 년 2 월 26 일 
 페이지 512 쪽 
 판 형 ( 188 * 245 * 25 ) 
 ISBN 979 - 11 - 85890 - 15 - 9 ( 93000 ) 
 키워드 MPI , Pthreads , OpenMP , 분산 메모리 , 공유 메모리 , 멀티 코어 프로세서 
 분야 프로그래밍 / 병렬 프로그래밍 
 ■ ONLINE COMPANION MATERIALS ( 원서 ) 
 ■ 2015 / 02 / 17 - [ 출간 전 책 소식 ] - 클라우드 - 사물 인터넷 ( IoT ) 시대 엔 병렬 프로그래밍 이 대세 ! 
 ipp - source . tgz 
 ■ 영문강 의 교안 ( ppt ) 
 ■ 본문 의 그림 
 ■ 연습 문제 해답 ( 영문 ) 
 ■ OpenCL 을 이용 한 이종 컴퓨팅 ( 제 2 판 ) 
 샘플 PDF ( 차례 , 옮긴 이 머리말 , 머리말 , 감사 의 글 , 베타 리더 후기 , 1 장 왜 병렬 컴퓨팅 인가 ? , 찾아보기 ) 
 입문 자 를 위한 병렬 프로그래밍 _ sample . pdf 
 ■ ( 등록 되 는 대로 링크 를 걸 어 드리 겠 습니다 . ) 
 병렬 프로그래밍 은 더 이상 전문가 들 만 을 위한 기술 이 아니 다 . 여러분 들 이 클러스터 나 멀티 코어 프로세서 의 강력 한 기능 을 충분히 사용 하 고 싶 다면 , 분산 메모리 병렬 프로그래밍 과 공유 메모리 병렬 프로그래밍 에 대해 배워야 한다 . 《 입문 자 를 위한 병렬 프로그래밍 》 은 여러분 들 이 MPI , Pthreads , OpenMP 를 사용 하 여 효율 적 인 병렬 프로그램 을 개발 하 는 방법 에 대해 설명 하 고 있 다 . 학생 이 든 실무 를 하 는 전문가 이 든 상관없이 피터 파체코 의 이 새로운 책 은 여러분 들 에게 분산 과 공유 메모리 프로그램 의 성능 을 어떻게 설계 하 고 , 디버깅 하 며 , 평가 하 는지 그 방법 을 알려 줄 것 이 다 . 
 ■ 튜토리얼 을 사용 하 여 작 은 프로그래밍 예제 로 시작 해서 좀 더 규모 가 큰 예제 들 을 구축 한다 . 
 ■ 분산 과 공유 메모리 프로그램 을 설계 하 고 , 디버깅 하 며 , 평가 하 는 데 초점 을 맞춘다 . 
 ■ MPI , Pthreads , 그리고 OpenMP 프로그래밍 모델 을 사용 하 여 병렬 프로그램 에 대한 개발 을 강조 한다 . 
 1 장 은 병렬 컴퓨팅 이 컴퓨터 분야 에서 중요 한 역할 을 하 는 이유 에 대해 상대 적 으로 덜 기술 적 으로 설명 하 고 있 다 . 또 , 병렬 시스템 과 병렬 프로그래밍 에 대해 간단 하 게 소개 하 고 있 다 . 2 장 은 컴퓨터 하드웨어 와 소프트웨어 에 대한 기술 적 배경 지식 을 제공 한다 . 3 장 , 4 장 , 그리고 5 장 은 MPI , Pthreads , 그리고 OpenMP 를 이용 한 프로그래밍 을 소개 하 고 있 으며 , 6 장 에서 는 두 개 의 큰 프로그램 을 개발 한다 . 하나 는 병렬 n - body 솔루션 이 고 , 다른 하나 는 병렬 트리 검색 이 다 . 이 두 프로그램 은 세 개 의 API 를 모두 사용 해서 개발 한다 . 7 장 은 다양 한 측면 의 병렬 컴퓨팅 에 대해 추가 적 인 정보 를 간략 하 게 다루 고 있 다 . 이 책 은 C 언어 를 사용 하 여 프로그램 을 개발 하 는데 , 그 이유 는 이 세 가지 API 가 모두 C 언어 인터페이스 를 갖 고 있 으며 , C 언어 는 사용 하 기 에 상당히 간단 한 언어 이 고 배우 기 도 상대 적 으로 쉬운 언어 이 기 때문 이 다 . C 언어 의 제어 구조 에 대해 익숙 한 C ++ 이나 자바 개발자 들 도 어려움 없이 읽 을 수 있 다 . 
 피터 파체코 ( Peter Pacheco ) 
 플로리다 주립 대학 ( Florida State University ) 에서 수학 으로 박사 학위 를 받 았 다 . 대학원 과정 을 마친 후 에 는 캘리포니아 대학 로스앤젤레스 캠퍼스 ( UCLA ) 의 컴퓨터 과학 과 교수 로 재직 하 였 다 . 다시 UCLA 에서 샌프란시스코 대학 ( USF ) 으로 자리 를 옮겼 는데 , USF 에서 는 컴퓨터 과학 과 학 과장 으로 근무 하 다 현재 는 수학 과 학 과장 을 맡 고 있 다 . 
 그 의 연구 분야 는 병렬 과학 컴퓨팅 이 며 , 회로 시뮬레이션 , 음성 인식 , 그리고 뉴런 의 대 규모 네트워크 에 대한 시뮬레이션 을 연구 하 였 다 . 20 년 이 넘 게 학부 와 대학원생 들 에게 병렬 컴퓨팅 을 가르쳐 왔으며 , 《 Parallel Programming with MPI 》 의 저자 이 기 도 하 다 . 
 한국 에서 컴퓨터 공학 을 전공 하 고 벤처 에서 약 8 년 동안 일 하 다가 좀 더 심오 한 공부 를 하 고자 유학길 에 올랐 다 . 미국 에서 컴퓨터 공학 으로 박사 학위 를 받 았 고 , 현재 실리콘밸리 에 있 는 한 벤처 에서 시스템 아키 텍 트 로 근무 중 이 다 . 최근 에 는 이종 컴퓨팅 관련 연구 에 매진 하 고 있 으며 , 샌프란시스코 에서 아내 와 두 딸 과 함께 살 고 있 다 . 옮긴 책 으로 는 《 OpenCL 을 이용 한 이종 컴퓨팅 ( 제 2 판 ) 》( 제 이펍 ) 이 있 다 . 
 CHAPTER 1 왜 병렬 컴퓨팅 인가 ? 
 1 . 1 성능 증가 의 필요 성 2 
 1 . 2 병렬 시스템 을 구축 해야 하 는 이유 3 
 1 . 3 병 렬화 프로그래밍 이 필요 한 이유 4 
 1 . 4 병 렬화 프로그램 을 작성 하 는 방법 8 
 1 . 5 배울 내용 11 
 1 . 6 병행 , 병렬 , 분산 13 
 1 . 7 책 의 구성 14 
 1 . 8 당부 의 말 14 
 1 . 9 이 책 의 표기 방법 15 
 1 . 10 요약 16 
 1 . 11 연습 문제 17 
 CHAPTER 2 병렬 하드웨어 와 병렬 소프트웨어 
 2 . 1 약간 의 배경 지식 22 
 2 . 1 . 1 폰 노이만 아키텍처 22 
 2 . 1 . 2 프로세스 , 멀티태스킹 , 그리고 스레드 24 
 2 . 2 폰 노이만 모델 의 수정 26 
 2 . 2 . 1 캐시 의 기본 개념 26 
 2 . 2 . 2 캐시 매핑 29 
 2 . 2 . 3 캐시 와 프로그램 : 예제 30 
 2 . 2 . 4 가상 메모리 32 
 2 . 2 . 5 명령어 레벨 병렬 화 35 
 2 . 2 . 6 하드웨어 멀티스레딩 39 
 2 . 3 병렬 하드웨어 40 
 2 . 3 . 1 SIMD 시스템 40 
 2 . 3 . 2 MIMD 시스템 44 
 2 . 3 . 3 인터 커넥션 네트워크 48 
 2 . 3 . 4 캐시 일관성 57 
 2 . 3 . 5 공유 메모리 와 분산 메모리 61 
 2 . 4 병렬 소프트웨어 62 
 2 . 4 . 1 경고 63 
 2 . 4 . 2 프로세스 / 스레드 의 조정 63 
 2 . 4 . 3 공유 메모리 65 
 2 . 4 . 4 분산 메모리 71 
 2 . 4 . 5 하이브리드 시스템 프로그래밍 75 
 2 . 5 입력 과 출력 76 
 2 . 6 성능 78 
 2 . 6 . 1 스피드 업과 효율 성 78 
 2 . 6 . 2 암달 의 법칙 81 
 2 . 6 . 3 확장 성 83 
 2 . 6 . 4 타이밍 84 
 2 . 7 병렬 프로그램 디자인 88 
 2 . 7 . 1 예제 89 
 2 . 8 병렬 프로그램 의 작성 과 실행 94 
 2 . 9 가정 94 
 2 . 10 요약 96 
 2 . 10 . 1 시 리얼 시스템 96 
 2 . 10 . 2 병렬 하드웨어 98 
 2 . 10 . 3 병렬 소프트웨어 100 
 2 . 10 . 4 입력 과 출력 102 
 2 . 10 . 5 성능 102 
 2 . 10 . 6 병렬 프로그램 설계 103 
 2 . 10 . 7 가정 104 
 2 . 11 연습 문제 104 
 CHAPTER 3 MPI 를 이용 한 분산 메모리 프로그래밍 
 3 . 1 시작 하 기 112 
 3 . 1 . 1 컴파일 과 실행 113 
 3 . 1 . 2 MPI 프로그램 115 
 3 . 1 . 3 MPI _ Init 과 MPI _ Finalize 116 
 3 . 1 . 4 커 뮤 니케 이터 , MPI _ Comm _ size 와 MPI _ Comm _ rank 117 
 3 . 1 . 5 SPMD 프로그램 117 
 3 . 1 . 6 통신 118 
 3 . 1 . 7 MPI _ Send 118 
 3 . 1 . 8 MPI _ Recv 121 
 3 . 1 . 9 메시지 매칭 121 
 3 . 1 . 10 status _ p 인수 123 
 3 . 1 . 11 MPI _ Send 와 MPI _ Recv 의 동작 의미 124 
 3 . 1 . 12 약간 의 심각 한 문제 126 
 3 . 2 MPI 를 사용 한 사다리꼴 규칙 126 
 3 . 2 . 1 사다리꼴 규칙 126 
 3 . 2 . 2 사다리꼴 규칙 의 병렬 화 128 
 3 . 3 I / O 의 처리 131 
 3 . 3 . 1 출력 132 
 3 . 3 . 2 입력 133 
 3 . 4 컬렉티브 통신 135 
 3 . 4 . 1 트리 구조 통신 135 
 3 . 4 . 2 MPI _ Reduce 137 
 3 . 4 . 3 컬렉티브 통신 대 일 대 일 통신 139 
 3 . 4 . 4 MPI _ Allreduce 141 
 3 . 4 . 5 브로드 캐스트 141 
 3 . 4 . 6 데이터 분산 144 
 3 . 4 . 7 스 캐 터 146 
 3 . 4 . 8 게 더 148 
 3 . 4 . 9 Allgather 150 
 3 . 5 MPI 파생 데이터 타입 153 
 3 . 6 프로그램 의 성능 평가 157 
 3 . 6 . 1 수행 시간 159 
 3 . 6 . 2 결과 162 
 3 . 6 . 3 속도 향상 과 효율 성 165 
 3 . 6 . 4 확장 성 166 
 3 . 7 병렬 정렬 알고리즘 167 
 3 . 7 . 1 간단 한 시리얼 정렬 알고리즘 168 
 3 . 7 . 2 병렬 홀수 - 짝수 변환 정렬 170 
 3 . 7 . 3 MPI 프로그램 에서 세이프티 173 
 3 . 7 . 4 병렬 홀수 - 짝수 정렬 의 마지막 설명 177 
 3 . 8 요약 179 
 3 . 9 연습 문제 185 
 3 . 10 프로그래밍 문제 194 
 CHAPTER 4 Pthreads 를 이용한 공유 메모리 프로그래밍 
 4 . 1 프로세스 , 스레드 , 그리고 pthreads 200 
 4 . 2 HELLO , WORLD 202 
 4 . 2 . 1 실행 202 
 4 . 2 . 2 준비 204 
 4 . 2 . 3 스레드 의 시작 206 
 4 . 2 . 4 스레드 의 실행 208 
 4 . 2 . 5 스레드 의 중지 209 
 4 . 2 . 6 에러 체 킹 210 
 4 . 2 . 7 스레드 의 시작 에 대한 다른 접근 210 
 4 . 3 매트릭스 - 벡터 곱셈 211 
 4 . 4 크리티컬 섹션 214 
 4 . 5 비지 - 웨이팅 218 
 4 . 6 뮤 텍스 222 
 4 . 7 프로듀서 - 컨 슈 머 동기 화 와 세마포어 227 
 4 . 8 배리어 와 조건 변수 232 
 4 . 8 . 1 비지 - 웨이팅 과 뮤 텍스 233 
 4 . 8 . 2 세마포어 234 
 4 . 8 . 3 조건 변수 236 
 4 . 8 . 4 Pthreads 배리 어 239 
 4 . 9 읽 기 - 쓰 기 잠금 239 
 4 . 9 . 1 링크드 리스트 함수 239 
 4 . 9 . 2 멀티 스레드 링크드 리스트 242 
 4 . 9 . 3 Pthreads 읽 기 - 쓰 기 잠금 246 
 4 . 9 . 4 여러 가지 구현 에 대한 성능 247 
 4 . 9 . 5 읽 기 - 쓰 기 잠금 의 구현 249 
 4 . 10 캐시 , 캐시 일관 성 , 그리고 거짓 공유 250 
 4 . 11 스레드 세이프티 257 
 4 . 11 . 1 올바르 지 않 은 프로그램 이 올바른 출력 을 낼 수 있 다 260 
 4 . 12 요약 261 
 4 . 13 연습 문제 264 
 4 . 14 프로그램 문제 272 
 CHAPTER 5 OpenMP 를 사용 한 공유 메모리 프로그래밍 
 5 . 1 시작 277 
 5 . 1 . 1 OpenMP 프로그램 의 컴파일 과 실행 방법 278 
 5 . 1 . 2 프로그램 279 
 5 . 1 . 3 오류 체크 283 
 5 . 2 사다리꼴 규칙 284 
 5 . 2 . 1 첫 번 째 openMP 버전 285 
 5 . 3 변수 의 범위 290 
 5 . 4 감소 클 라우즈 291 
 5 . 5 parallel for 디렉티브 295 
 5 . 5 . 1 주 의 사항 297 
 5 . 5 . 2 데이터 의존 성 298 
 5 . 5 . 3 루프 에 의한 의존 성 찾 기 300 
 5 . 5 . 4 의 계산 301 
 5 . 5 . 5 변수 범위 304 
 5 . 6 OpenMP 에서 루프 의 다른 예제 : 정렬 305 
 5 . 6 . 1 버블 정렬 305 
 5 . 6 . 2 홀수 - 짝수 변환 정렬 307 
 5 . 7 루프 스케줄 310 
 5 . 7 . 1 schedule 클 라우즈 312 
 5 . 7 . 2 static 스케줄 타입 313 
 5 . 7 . 3 dynamic 과 guided 스케줄 타입 314 
 5 . 7 . 4 runtime 스케줄 타입 315 
 5 . 7 . 5 어떤 스케줄 을 사용 해야 할까 ? 316 
 5 . 8 프로듀서 와 컨 슈 머 317 
 5 . 8 . 1 큐 317 
 5 . 8 . 2 메시지 패 싱 318 
 5 . 8 . 3 메시지 전송 319 
 5 . 8 . 4 메시지 수신 319 
 5 . 8 . 5 종료 검출 320 
 5 . 8 . 6 시작 321 
 5 . 8 . 7 atomic 디렉티브 322 
 5 . 8 . 8 크리티컬 섹션 과 잠금 323 
 5 . 8 . 9 메시지 패 싱 프로그램 에서 잠금 의 사용 326 
 5 . 8 . 10 critical 디렉티브 , atomic 디렉티브 , 혹은 잠금 ? 327 
 5 . 8 . 11 몇 가지 의 문제점 328 
 5 . 9 캐시 , 캐시 일관 성 , 거짓 공유 330 
 5 . 10 스레드 세이프티 337 
 5 . 10 . 1 올바르 지 않 은 프로그램 이 정상 적 인 결과 를 만들 어 낼 수 도 있 다 340 
 5 . 11 정리 341 
 5 . 12 연습 문제 346 
 5 . 13 프로그래밍 문제 352 
 CHAPTER 6 병렬 프로그램 개발 
 6 . 1 두 개 의 n - body 솔루션 357 
 6 . 1 . 1 문제 358 
 6 . 1 . 2 두 개 의 시리얼 프로그램 359 
 6 . 1 . 3 솔루션 의 병렬 화 365 
 6 . 1 . 4 I / O 369 
 6 . 1 . 5 OpenMP 를 사용 한 기본 솔루션 의 병렬 화 370 
 6 . 1 . 6 OpenMP 를 사용 한 리듀스 솔루션 의 병렬 화 373 
 6 . 1 . 7 OpenMP 코드 의 평가 378 
 6 . 1 . 8 Pthreads 를 사용 한 솔루션 의 병렬 화 380 
 6 . 1 . 9 MPI 를 사용 한 기본 솔루션 의 병렬 화 381 
 6 . 1 . 10 MPI 를 사용 한 리듀스 솔루션 의 병렬 화 384 
 6 . 1 . 11 MPI 솔루션 의 성능 391 
 6 . 2 트리 검색 393 
 6 . 2 . 1 재귀 적 깊이 - 우선 검색 396 
 6 . 2 . 2 비재 귀 적 깊이 - 우선 검색 397 
 6 . 2 . 3 시 리얼 구현 을 위한 자료 구조 400 
 6 . 2 . 4 시 리얼 구현 의 성능 402 
 6 . 2 . 5 트리 검색 의 병렬 화 402 
 6 . 2 . 6 pthreads 를 사용 한 트리 검색 의 정적 병렬 화 405 
 6 . 2 . 7 pthreads 를 사용 한 트리 검색 의 동적 병렬 화 408 
 6 . 2 . 8 Pthreads 트리 - 검색 프로그램 의 평가 413 
 6 . 2 . 9 OpenMP 를 사용 한 트리 - 검색 프로그램 의 병렬 화 414 
 6 . 2 . 10 OpenMP 구현 의 성능 418 
 6 . 2 . 11 MPI 와 정적 파티 셔 닝 을 사용 한 트리 검색 의 구현 419 
 6 . 2 . 12 MPI 와 동적 파티 셔 닝 을 사용 한 트리 검색 의 구현 429 
 6 . 3 조언 440 
 6 . 4 어떤 API 가 최선 인가 ? 440 
 6 . 5 요약 441 
 6 . 5 . 1 Pthreads 와 OpenMP 443 
 6 . 5 . 2 MPI 444 
 6 . 6 연습 문제 448 
 6 . 7 프로그래밍 연습 461 
 CHAPTER 7 그 다음 에 해야 할 일 
 참고 문헌 469 
 찾아보기 473 
 입문 자 를 위한 병렬 프로그래밍 ( 0 ) 
 PM 인터뷰 의 모든 것 : 예비 제품 관리자 를 위한 면접 멘토링 ( 0 ) 
 동영상 과 함께 하 는 언리얼 엔진 4 블 루 프린트 게임 만들 기 ( 0 ) 
 소셜 코딩 으로 이끄 는 GitHub 실천 기술 ( 0 ) 
 TAGMPI , OpenMP , parallel programming , Pthreads , 공유 메모리 , 김성민 , 멀티 코어 , 병렬 프로그래밍 , 분산 메모리 , 제 이펍 , 피터 파체코 
 < PREV 1 · · · 378 379 380 381 382 383 384 385 386 · · · 844 NEXT > 
 Total 1 , 761 , 569