간편결제, 신용카드 청구할인
삼성카드 6% (25,380원)
(삼성카드 6% 청구할인)
인터파크 롯데카드 5% (25,650원)
(최대할인 10만원 / 전월실적 40만원)
북피니언 롯데카드 30% (18,900원)
(최대할인 3만원 / 3만원 이상 결제)
NH쇼핑&인터파크카드 20% (21,600원)
(최대할인 4만원 / 2만원 이상 결제)
Close

입문자를 위한 병렬 프로그래밍

원제 : An Introduction to Parallel Programming
소득공제

2013년 9월 9일 이후 누적수치입니다.

판매지수 55
?
판매지수란?
사이트의 판매량에 기반하여 판매량 추이를 반영한 인터파크 도서에서의 독립적인 판매 지수입니다. 현재 가장 잘 팔리는 상품에 가중치를 두었기 때문에 실제 누적 판매량과는 다소 차이가 있을 수 있습니다. 판매량 외에도 다양한 가중치로 구성되어 최근의 이슈도서 확인시 유용할 수 있습니다. 해당 지수는 매일 갱신됩니다.
Close
공유하기
정가

30,000원

  • 27,000 (10%할인)

    1,500P (5%적립)

할인혜택
적립혜택
  • I-Point 적립은 출고완료 후 14일 이내 마이페이지에서 적립받기한 경우만 적립됩니다.
추가혜택
배송정보
  •  당일배송을 원하실 경우 주문시 당일배송을 선택해주세요.
  • 서울시 강남구 삼성로 512변경
  • 배송지연보상 안내
  • 무료배송
  • 해외배송가능
주문수량
감소 증가
  • 이벤트/기획전

  • 연관도서

  • 사은품(7)

출판사 서평

MPI, Pthreads, 그리고 OpenMP를 이용한 병렬 프로그래밍 완벽 가이드!
효율적 병렬 프로그래밍에 관한 완벽한 튜토리얼!
샌프란시스코 대학을 비롯한 세계 유명 대학 교재로 선정!

병렬 프로그래밍은 더 이상 전문가들만을 위한 기술이 아니다. 여러분들이 클러스터나 멀티코어 프로세서의 강력한 기능을 충분히 사용하고 싶다면, 분산 메모리 병렬 프로그래밍과 공유 메모리 병렬 프로그래밍에 대해 배워야 한다. [입문자를 위한 병렬 프로그래밍]은 여러분들이 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++이나 자바 개발자들도 어려움 없이 읽을 수 있다.

목차

CHAPTER 1 왜 병렬 컴퓨팅인가?
1.1 성능 증가의 필요성
1.2 병렬 시스템을 구축해야 하는 이유
1.3 병렬화 프로그래밍이 필요한 이유
1.4 병렬화 프로그램을 작성하는 방법
1.5 배울 내용
1.6 병행, 병렬, 분산
1.7 책의 구성
1.8 당부의 말
1.9 이 책의 표기 방법
1.10 요약
1.11 연습문제

CHAPTER 2 병렬 하드웨어와 병렬 소프트웨어
2.1 약간의 배경 지식
2.1.1 폰 노이만 아키텍처
2.1.2 프로세스, 멀티태스킹, 그리고 스레드
2.2 폰 노이만 모델의 수정
2.2.1 캐시의 기본 개념
2.2.2 캐시 매핑
2.2.3 캐시와 프로그램: 예제
2.2.4 가상 메모리
2.2.5 명령어 레벨 병렬화
2.2.6 하드웨어 멀티스레딩
2.3 병렬 하드웨어
2.3.1 SIMD 시스템
2.3.2 MIMD 시스템
2.3.3 인터커넥션 네트워크
2.3.4 캐시 일관성
2.3.5 공유 메모리와 분산 메모리
2.4 병렬 소프트웨어
2.4.1 경고
2.4.2 프로세스/스레드의 조정
2.4.3 공유 메모리
2.4.4 분산 메모리
2.4.5 하이브리드 시스템 프로그래밍
2.5 입력과 출력
2.6 성능
2.6.1 스피드업과 효율성
2.6.2 암달의 법칙
2.6.3 확장성
2.6.4 타이밍
2.7 병렬 프로그램 디자인
2.7.1 예제
2.8 병렬 프로그램의 작성과 실행
2.9 가정
2.10 요약
2.10.1 시리얼 시스템
2.10.2 병렬 하드웨어
2.10.3 병렬 소프트웨어
2.10.4 입력과 출력
2.10.5 성능
2.10.6 병렬 프로그램 설계
2.10.7 가정
2.11 연습문제

CHAPTER 3 MPI를 이용한 분산 메모리 프로그래밍
3.1 시작하기
3.1.1 컴파일과 실행
3.1.2 MPI 프로그램
3.1.3 MPI_Init과 MPI_Finalize
3.1.4 커뮤니케이터, MPI_Comm_size와 MPI_Comm_rank
3.1.5 SPMD 프로그램
3.1.6 통신
3.1.7 MPI_Send
3.1.8 MPI_Recv
3.1.9 메시지 매칭
3.1.10 status_p 인수
3.1.11 MPI_Send와 MPI_Recv의 동작 의미
3.1.12 약간의 심각한 문제
3.2 MPI를 사용한 사다리꼴 규칙
3.2.1 사다리꼴 규칙
3.2.2 사다리꼴 규칙의 병렬화
3.3 I/O의 처리
3.3.1 출력
3.3.2 입력
3.4 컬렉티브 통신
3.4.1 트리 구조 통신
3.4.2 MPI_Reduce
3.4.3 컬렉티브 통신 대 일대일 통신
3.4.4 MPI_Allreduce
3.4.5 브로드캐스트
3.4.6 데이터 분산
3.4.7 스캐터
3.4.8 게더
3.4.9 Allgather
3.5 MPI 파생 데이터 타입
3.6 프로그램의 성능 평가
3.6.1 수행 시간
3.6.2 결과
3.6.3 속도 향상과 효율성
3.6.4 확장성
3.7 병렬 정렬 알고리즘
3.7.1 간단한 시리얼 정렬 알고리즘
3.7.2 병렬 홀수-짝수 변환 정렬
3.7.3 MPI 프로그램에서 세이프티
3.7.4 병렬 홀수-짝수 정렬의 마지막 설명
3.8 요약
3.9 연습문제
3.10 프로그래밍 문제

CHAPTER 4 Pthreads를 이용한 공유 메모리 프로그래밍
4.1 프로세스, 스레드, 그리고 pthreads
4.2 HELLO, WORLD
4.2.1 실행
4.2.2 준비
4.2.3 스레드의 시작
4.2.4 스레드의 실행
4.2.5 스레드의 중지
4.2.6 에러 체킹
4.2.7 스레드의 시작에 대한 다른 접근
4.3 매트릭스-벡터 곱셈
4.4 크리티컬 섹션
4.5 비지-웨이팅
4.6 뮤텍스
4.7 프로듀서-컨슈머 동기화와 세마포어
4.8 배리어와 조건 변수
4.8.1 비지-웨이팅과 뮤텍스
4.8.2 세마포어
4.8.3 조건 변수
4.8.4 Pthreads 배리어
4.9 읽기-쓰기 잠금
4.9.1 링크드 리스트 함수
4.9.2 멀티스레드 링크드 리스트
4.9.3 Pthreads 읽기-쓰기 잠금
4.9.4 여러 가지 구현에 대한 성능
4.9.5 읽기-쓰기 잠금의 구현
4.10 캐시, 캐시 일관성, 그리고 거짓 공유
4.11 스레드 세이프티
4.11.1 올바르지 않은 프로그램이 올바른 출력을 낼 수 있다
4.12 요약
4.13 연습문제
4.14 프로그램 문제

CHAPTER 5 OpenMP를 사용한 공유 메모리 프로그래밍
5.1 시작
5.1.1 OpenMP 프로그램의 컴파일과 실행 방법
5.1.2 프로그램
5.1.3 오류 체크
5.2 사다리꼴 규칙
5.2.1 첫 번째 openMP 버전
5.3 변수의 범위
5.4 감소 클라우즈
5.5 parallel for 디렉티브
5.5.1 주의 사항
5.5.2 데이터 의존성
5.5.3 루프에 의한 의존성 찾기
5.5.4 의 계산
5.5.5 변수 범위
5.6 OpenMP에서 루프의 다른 예제: 정렬
5.6.1 버블 정렬
5.6.2 홀수-짝수 변환 정렬
5.7 루프 스케줄
5.7.1 schedule 클라우즈
5.7.2 static 스케줄 타입
5.7.3 dynamic과 guided 스케줄 타입
5.7.4 runtime 스케줄 타입
5.7.5 어떤 스케줄을 사용해야 할까?
5.8 프로듀서와 컨슈머
5.8.1 큐
5.8.2 메시지 패싱
5.8.3 메시지 전송
5.8.4 메시지 수신
5.8.5 종료 검출
5.8.6 시작
5.8.7 atomic 디렉티브
5.8.8 크리티컬 섹션과 잠금
5.8.9 메시지 패싱 프로그램에서 잠금의 사용
5.8.10 critical 디렉티브, atomic 디렉티브, 혹은 잠금?
5.8.11 몇 가지의 문제점
5.9 캐시, 캐시 일관성, 거짓 공유
5.10 스레드 세이프티
5.10.1 올바르지 않은 프로그램이 정상적인 결과를 만들어 낼 수도 있다
5.11 정리
5.12 연습문제
5.13 프로그래밍 문제

CHAPTER 6 병렬 프로그램 개발
6.1 두 개의 n-body 솔루션
6.1.1 문제
6.1.2 두 개의 시리얼 프로그램
6.1.3 솔루션의 병렬화
6.1.4 I/O
6.1.5 OpenMP를 사용한 기본 솔루션의 병렬화
6.1.6 OpenMP를 사용한 리듀스 솔루션의 병렬화
6.1.7 OpenMP 코드의 평가
6.1.8 Pthreads를 사용한 솔루션의 병렬화
6.1.9 MPI를 사용한 기본 솔루션의 병렬화
6.1.10 MPI를 사용한 리듀스 솔루션의 병렬화
6.1.11 MPI 솔루션의 성능
6.2 트리 검색
6.2.1 재귀적 깊이-우선 검색
6.2.2 비재귀적 깊이-우선 검색
6.2.3 시리얼 구현을 위한 자료 구조
6.2.4 시리얼 구현의 성능
6.2.5 트리 검색의 병렬화
6.2.6 pthreads를 사용한 트리 검색의 정적 병렬화
6.2.7 pthreads를 사용한 트리 검색의 동적 병렬화
6.2.8 Pthreads 트리-검색 프로그램의 평가
6.2.9 OpenMP를 사용한 트리-검색 프로그램의 병렬화
6.2.10 OpenMP 구현의 성능
6.2.11 MPI와 정적 파티셔닝을 사용한 트리 검색의 구현
6.2.12 MPI와 동적 파티셔닝을 사용한 트리 검색의 구현
6.3 조언
6.4 어떤 API가 최선인가?
6.5 요약
6.5.1 Pthreads와 OpenMP
6.5.2 MPI
6.6 연습문제
6.7 프로그래밍 연습

CHAPTER 7 그 다음에 해야 할 일

참고문헌
찾아보기

본문중에서

대부분 사용하고 있는 공유 메모리 시스템은 하나 혹은 두 개의 멀티코어(multicore) 프로세서를 사용한다. 1장에서 설명한 것처럼 멀티코어 프로세서는 여러 개의 CPU 혹은 여러 개의 코어를 하나의 칩에서 사용한다. 일반적으로 각 코어는 프라이빗 레벨 1 캐시를 갖고 있으며 다른 캐시는 코어들 간에 공유할 수도 있지만 공유할 수 없기도 한다.
(/ p.46)

과거에는 모든 병렬 프로그램 개발은 vi나 Emacs와 같은 텍스트 에디터를 사용해서 개발됐다. 그 당시 프로그램은 커맨드 라인이나 에디터 내부에서 컴파일하고 실행했다. 디버거 역시 커맨드 라인에서 사용했다. 현재는 마이크로소프트나 이클립스(Eclipse) 프로젝트 혹은 다른 회사나 사이트에서 제공하는 통합 개발 환경(IDE, Integrated Development Environment)를 사용한다. [16, 38]을 보자.
(/ p.94)

매트릭스-벡터 곱셈 프로그램의 성능에 대해 살펴보도록 하자. 대부분의 파트에서 프로그램의 실행 속도가 최대한 빠르게 실행하는 것을 기대하기 때문에 같은 문제를 해결하는 시리얼 프로그램보다는 병렬로 프로그램을 작성했다. 이러한 예상이 맞다고 어떻게 검증할 수 있을까? 이에 대해서는 섹션 2.6에서 논의했었다. 따라서 섹션 2.6에서 배운 내용에 대해 다시 기억을 되살려 보자.
(/ p.157)

Pthreads에서 배리어를 생성하는 더 좋은 방법은 조건 변수(condition variable)를 사용하는 것이다. 조건 변수는 스레드가 특정 이벤트나 조건(condition)이 발생할 때까지 실행을 서스펜드(suspend)하는 데이터 객체이다. 이벤트나 조건이 발생할 때 다른 스레드는 그 스레드에게 “웨이크업(wake up)” 시그널을 보낸다. 조건 변수는 항상 뮤텍스와 관련이 있다.
(/ p.236)

큐(queue)는 새로운 항목이 큐의 “뒤”에 삽입되고 큐의 “앞”에서는 삭제되는 형태를 리스트 구조의 자료 구조라는 것을 기억하자. 큐는 슈퍼마켓에서 물건을 사기 위해 줄을 서 있는 고객들의 모습과 비슷하다. 리스트의 항목은 고객이다. 새로운 고객은 줄의 “뒤”에 가서 서고 다음 고객이 계산을 하고 나면 그 다음 고객이 줄의 “앞”에 서게 된다.
(/ p.317)

저자소개

생년월일 -
출생지 -
출간도서 0종
판매수 0권

플로리다 주립대학(Florida State University)에서 수학으로 박사학위를 받았다. 대학원 과정을 마친 후에는 캘리포니아 대학 로스앤젤레스 캠퍼스(UCLA)의 컴퓨터 과학과 교수로 재직하였다. 다시 UCLA에서 샌프란시스코 대학(USF)으로 자리를 옮겼는데, USF에서는 컴퓨터 과학과 학과장으로 근무하다 현재는 수학과 학과장을 맡고 있다.
그의 연구 분야는 병렬 과학 컴퓨팅이며, 회로 시뮬레이션, 음성 인식, 그리고 뉴런의 대규모 네트워크에 대한 시뮬레이션을 연구하였다. 20년이 넘게 학부와 대학원생들에게 병렬 컴퓨팅을 가르쳐 왔으며, [Parallel Programming wit

펼쳐보기
생년월일 -
출생지 -
출간도서 0종
판매수 0권

한국에서 컴퓨터 공학을 전공하고 벤처에서 약 8년 동안 일하다가 좀 더 심오한 공부를 하고자 유학길에 올랐다. 미국에서 컴퓨터 공학으로 박사학위를 받았고, 현재 실리콘밸리에 있는 한 벤처에서 시스템 아키텍트로 근무 중이다. 최근에는 이종 컴퓨팅 관련 연구에 매진하고 있으며, 샌프란시스코에서 아내와 두 딸과 함께 살고 있다.
옮긴 책으로는 [입문자를 위한 병렬 프로그래밍], [OpenCL을 이용한 이종 컴퓨팅(제2판)](제이펍)이 있다.

이 책과 내용이 비슷한 책 ? 내용 유사도란? 이 도서가 가진 내용을 분석하여 기준 도서와 얼마나 많이 유사한 콘텐츠를 많이 가지고 있는가에 대한 비율입니다.

    리뷰

    0.0 (총 0건)

    구매 후 리뷰 작성 시, 북피니언 지수 최대 600점

    리뷰쓰기

    기대평

    작성시 유의사항

    평점
    0/200자
    등록하기

    기대평

    10.0

    교환/환불

    교환/환불 방법

    ‘마이페이지 > 취소/반품/교환/환불’ 에서 신청함, 1:1 문의 게시판 또는 고객센터(1577-2555) 이용 가능

    교환/환불 가능 기간

    고객변심은 출고완료 다음날부터 14일 까지만 교환/환불이 가능함

    교환/환불 비용

    고객변심 또는 구매착오의 경우에만 2,500원 택배비를 고객님이 부담함

    교환/환불 불가사유

    반품접수 없이 반송하거나, 우편으로 보낼 경우 상품 확인이 어려워 환불이 불가할 수 있음
    배송된 상품의 분실, 상품포장이 훼손된 경우, 비닐랩핑된 상품의 비닐 개봉시 교환/반품이 불가능함

    소비자 피해보상

    소비자 피해보상의 분쟁처리 등에 관한 사항은 소비자분쟁해결기준(공정거래위원회 고시)에 따라 비해 보상 받을 수 있음
    교환/반품/보증조건 및 품질보증 기준은 소비자기본법에 따른 소비자 분쟁 해결 기준에 따라 피해를 보상 받을 수 있음

    기타

    도매상 및 제작사 사정에 따라 품절/절판 등의 사유로 주문이 취소될 수 있음(이 경우 인터파크도서에서 고객님께 별도로 연락하여 고지함)

    배송안내

    • 인터파크 도서 상품은 택배로 배송되며, 출고완료 1~2일내 상품을 받아 보실 수 있습니다

    • 출고가능 시간이 서로 다른 상품을 함께 주문할 경우 출고가능 시간이 가장 긴 상품을 기준으로 배송됩니다.

    • 군부대, 교도소 등 특정기관은 우체국 택배만 배송가능하여, 인터파크 외 타업체 배송상품인 경우 발송되지 않을 수 있습니다.

    • 배송비

    도서(중고도서 포함) 구매

    2,000원 (1만원이상 구매 시 무료배송)

    음반/DVD/잡지/만화 구매

    2,000원 (2만원이상 구매 시 무료배송)

    도서와 음반/DVD/잡지/만화/
    중고직배송상품을 함께 구매

    2,000원 (1만원이상 구매 시 무료배송)

    업체직접배송상품 구매

    업체별 상이한 배송비 적용