이 책은 병렬 처리를 위한 프로그램 방식을 병렬 컴퓨터의 메모리 분산 형태에 따라 OpenMP와 MPI(Message Passing Interface) 그리고 그래픽 지원 장치인 GPU(Graphical Processing Unit)에서 일반 연산을 실행할 수 있는 CUDA 프로그래밍에 대하여 설명한다. 이 책에서 다루는 각 영역은 내용이 모두 방대하지만 저자의 오랜 연구와 강의 경험을 바탕으로 실제 병렬 프로그램에서 주로 사용되는 내용을 예제 위주로 요약하여 기술하였다.
예제에서 사용하는 병렬 프로그램 언어는 C 언어를 기본으로 하고 있으며 Fortran 언어도 중복 적으로 설명하여 과학 분야의 수치계산 프로그램에서 많이 사용되는 Fortran 언어의 사용자도 병렬 프로그램을 이해할 수 있도록 하였다. Fortran 언어는 Fortran90을 기준으로 하였다.
이 책의 구성은 다음과 같다.
- 1장은 병렬 컴퓨터의 하드웨어와 관련된 소프트웨어 그리고 컴퓨터 프로그램의 성능 분석에 대하여 간단히 설명한다.
- 2장은 공유 메모리형의 병렬 컴퓨터에서 실행할 수 있는 OpenMP를 사용한 프로그래밍 방식 을 설명한다.
- 3장은 공유 및 분산 메모리형의 모든 병렬 컴퓨터에서 실행할 수 있는 MPI를 사용한 병렬 프로그래밍 방식을 설명한다.
- 4장은 그래픽 장치인 GPU에서 일반 연산 프로그램의 실행이 가능하도록 Nvidia사에서 제공하는 CUDA를 사용한 프로그래밍 방식을 설명한다.
이 책의 독자는 C 혹은 Fortran 언어에 대한 기초 지식을 필요로 한다. 이 책을 통하여 병렬 처리를 위한 프로그램에 관심이 있는 개발자 및 고속 계산 프로그램이 필요한 현업의 전문가들에게많은 도움이 되기를 바란다.
CHAPTER 01 병렬 프로그래밍
1.1 병렬 컴퓨터
1.2 병렬 프로그래밍 언어
1.3 성능 분석
CHAPTER 02 공유 메모리형 병렬 프로그래밍 - OpenMP
2.1 프로세스 간 통신 프로그램 - IPC
2.2 OpenMP
2.3 OpenMP 병렬 프로그램
2.4 누적 계산 (Reduction)
2.5 OpenMP 정렬 프로그램
2.6 사다리꼴 공식(Trapezoidal rule)을 사용한 원주율(π) 계산
CHAPTER 03 메시지 전송 라이브러리 - MPI
3.1 MPI (Message Passing Interface)
3.2 MPI 병렬 프로그램
3.3 점대점 (p2p) 통신
3.4 집합(collective) 통신
3.5 통신 데이터의 그룹화
3.6 통신 전달자 (Communicator)
3.7 다차원 좌표계 구조
3.8 고급 점대점 통신
3.9 병렬 입출력
3.10 행렬의 곱 (Matrix multiplication) 프로그램
3.11 2차원 좌표의 격자에서 인접한 값을 사용하는 프로그램
3.12 사다리꼴 공식으로 원주율(π)을 계산하는 MPI 프로그램
CHAPTER 04 GPU 프로그래밍 - CUDA
4.1 GPU와 CUDA
4.2 CUDA 프로그래밍
4.3 사다리꼴공식을 사용하여 원주율(π)을 계산하는 CUDA 프로그램