Top

라즈베리 파이와 슈퍼컴퓨팅 [병렬처리 시스템 구축 및 과학 프로그래밍 가이드북]

  • 원서명Raspberry Pi Supercomputing and Scientific Programming: MPI4PY, NumPy, and SciPy for Enthusiasts (ISBN 9781484228777)
  • 지은이애쉬윈 파얀카(Ashwin Pajankar)
  • 옮긴이배진호
  • ISBN : 9791161752099
  • 25,000원
  • 2018년 09월 28일 펴냄
  • 페이퍼백 | 248쪽 | 188*235mm
  • 시리즈 : 프로그래밍 언어

책 소개

소스 코드 파일은 여기에서 내려 받으실 수 있습니다.

요약

라즈베리 파이와 싱글 보드 컴퓨터의 근본에서 출발해 슈퍼컴퓨팅과 병렬 프로그래밍의 기초를 다룬다. 파이의 노드를 준비하고 네트워크로 연결해 하나의 클러스터로 동작하게 하며, MPI4PY로 클러스터의 기능을 활용한다.
또한 파이썬을 활용한 수치 연산을 위해 NumPy 라이브러리, 과학 연산 라이브러리인 SciPy와 신호 처리 및 영상 처리에서 SciPy의 애플리케이션을 살펴본다. 마지막으로 이미지 데이터를 표현하는 방법과 matplolib 라이브러리로 히스토그램을 계산하는 방법을 다룬다.
이 책은 과학 연산의 놀라운 세계로 떠나는 여정의 시작에 불과하다. matplotlib, OpenCV, SciKit 라이브러리를 탐색할 수 있으며, OS 프로그래밍을 하려는 독자들은 라즈베리 파이의 C에서 pthread와 POSIX 라이브러리를 탐색할 수 있다. 라즈베리 파이의 가능성이 무한하다. 이 경이로운 여정의 시작을 위해 최선을 다하길 바란다.

이 책에서 다루는 내용

■ 슈퍼컴퓨팅의 핵심
■ 저가의 라즈베리 파이 클러스터 구축
■ 병렬 프로그래밍의 성능과 메시지 전달 인터페이스의 사용
■ 라즈베리 파이를 활용한 심볼릭, 수치, 과학 프로그래밍

이 책의 대상 독자

라즈베리 파이와 병렬 프로그래밍을 시작하는 사람을 위한 책이다. 사람들은 저비용 슈퍼컴퓨터를 만드는 방법에 관심이 있고, 매우 적은 비용으로 과학 프로그래밍을 시작하고 싶어한다. 하지만 이 책은 컴퓨터 과학의 세계를 완전 처음 접하는 사람을 위한 책이 아니다. 독자가 컴퓨터의 기본 지식을 갖고 있으며, 그와 관련된 대부분의 근본 개념을 처음 접하는 것이 아니라고 가정한다. 컴퓨터를 좋아하고, 컴퓨터 과학을 좀 더 탐구하기 위한 강력한 툴을 배우길 원하는 학생과 그와 같은 취미를 가진 사람에게 적합하다. 메이커와 해커 역시 이 책이 흥미롭다고 여길 것이다. 마지막으로 독자가 왜 이 책을 읽는지 모른다면 아마 라즈베리 파이, 슈퍼컴퓨터, 과학 프로그래밍, 병렬 프로그래밍에 관심이 있기 때문일 것이다. 내가 이 책을 집필하는 것을 즐겼던 것처럼 모든 독자가 이 책을 즐기며 읽기 바란다.

이 책의 구성

1장, ‘싱글 보드 컴퓨터와 라즈베리 파이의 소개’에서는 싱글 보드 컴퓨터의 역사와 철학을 소개한다. 또한 라즈베리 파이의 기초를 알아보고, 라즈베리 파이를 설치하며, 하나의 네트워크로 연결하는 방법을 소개한다.
2장, ‘중요한 리눅스 명령어와 원격 연결’에서는 중요한 리눅스 명령어를 소개한다. 또한 라즈베리 파이로 원격 연결을 구축하기 위한 절차를 상세히 설명한다.
3장, ‘파이썬 소개’에서는 파이썬 역사와 철학을 소개하고, 파이썬 2와 파이썬 3 사이의 차이를 논의하며, 파이썬 3 인터프리터의 다양한 모드를 알아본다.
4장, ‘슈퍼컴퓨팅의 개요’에서는 슈퍼컴퓨팅의 개념을 소개한다.
5장, ‘메시지 전달 인터페이스’에서는 MPI4PY를 라즈베리 파이에 설치하는 방법을 시연한다.
6장, ‘슈퍼컴퓨터 구축’에서는 멀티 파이로 슈퍼컴퓨팅을 구축하는 방법을 소개한다.
7장, ‘라즈베리 파이 오버클럭킹’에서는 안전하게 파이의 다양한 모델을 오버클럭하는 방법을 소개한다.
8장, ‘파이썬 3에서 병렬 프로그래밍’에서는 파이썬 3로 MPI4PY 프로그래밍하는 방법을 소개한다. 또한 병렬 프로그래밍의 중요한 개념들과 구조들을 알아본다.
9장, ‘SciPy 스택과 심볼릭 프로그래밍 소개’에서는 SciPy 스택의 구성 요소를 소개한다. 또한 SymPy를 이용해 심볼릭 프로그래밍(symbolic programming)하는 방법을 알아본다.
10장, ‘NumPy 소개’에서는 Numpy를 이용한 수치 연산의 세계를 소개한다.
11장, ‘SciPy 소개’에서는 SciPy 라이브러리의 다양한 모듈을 소개한다.
12장, ‘SciPy를 활용한 신호 처리’에서는 시각적으로 신호와 신호 처리의 놀라운 세계를 탐험한다.
13장, ‘SciPy를 활용한 처리’에서는 영상 처리의 기초를 알아본다.
14장, ‘Matplotlib’에서는 파이썬의 Matplotlib으로 데이터 시각화에 대한 짧은 소개를 제공한다.

상세 이미지

저자/역자 소개

지은이의 말

라즈베리 파이는 과학 프로그래밍을 위한 학습 플랫폼으로서의 역할을 한다. 개발자들은 라즈베리 파이를 신호 처리나 영상 처리와 같은 과학 영역의 중요한 개념을 탐구하거나 SymPy를 사용해 심벌릭 연산(symbolic computations)을 하는 데 사용할 수 있다. 이 책에서는 과학 프로그래밍의 영역을 상세히 탐구한다. 이 책은 과학 프로그래밍 세계의 증명과 탐구를 위해 약 100개의 코딩 예제를 제공한다. 이 책이 과학 커뮤니티와 젊은 연구자들이 새로운 과학 영역을 개척하기 위한 도구로써 라즈베리 파이와 파이썬을 사용하는 데 도움이 되길 바란다.

지은이 소개

애쉬윈 파얀카(Ashwin Pajankar)

프로그래머, 메이커, 작가, 유튜버로 박학다식하며 과학의 대중화에 힘쓰고 있다. 인도의 IIT 하이데라바드 MTech에서 컴퓨터 과학과 공학을 전공했다. 과학, 기술, 공학, 수학(STEM, science, technology, engineering, and mathematics)의 진흥에 관심을 갖고 있다. 팩트출판사(Packt Publication)에서 3권, 린펍(Leanpub)에서 6권, 에이프레스(Apress)에서 2권의 책을 출판했다. 또한 팩트출판사에서 출판한 4권의 책을 리뷰했다. 이 책은 에이프레스에서 출판하는 세 번째 책이며, 현재 몇 권의 책을 더 집필하고 있다.

옮긴이의 말

새로운 개념을 이해하는 가장 효과적인 학습 방법 중의 하나는 실습을 통한 구현과 동작 원리의 분석을 통한 이해라고 생각한다. 이 책은 분산 처리와 과학 프로그래밍을 쉽게 실습할 수 있는 가이드북이다. 저가의 라즈베리 파이를 활용해 오픈 소스로 분산 처리를 구현하기 때문이다.
개인적으로 분산 처리에 관심을 두게 된 것은 연산 부하에 대한 해결책을 찾으면서부터다. 단일코어로 처리할 수 있는 연산에는 한계가 있을 수밖에 없기 때문에 연산 부하가 큰 프로그래밍을 빨리 처리하는 데는 분산 처리가 그 해결책이다. 하지만 문제는 학습 및 구현에 드는 시간과 돈이다. 가장 간단한 분산 처리를 구현하는 데에도 2개 이상의 클러스터가 필요하다. 비싼 비용을 들여 하드웨어를 준비해도 프로그램 구현은 또 다른 차원의 도전이다. 저자는 최근 주목 받고 있는 저가의 라즈베리 파이를 클러스터로 활용했다. 소프트웨어 측면에서는 파이썬, MPI, MPI4PY 조합을 활용해 분산 처리를 구현했다. 초보자가 이해하기 쉽고, 사용하기에도 편리하기 때문이다.
또한 라즈베리 파이를 사용해 과학 프로그래밍을 수행한다. 강의와 책을 통해 지루하게 배웠을 수도 있는 선형대수, 행렬 연산, 신호 처리, 영상 처리 등의 개념을 매트랩 같은 고가의 툴을 사용하지 않고도 공짜로 구현해볼 수 있다는 것은 더없이 좋은 기회라고 생각한다. 이는 학생뿐 아니라 새롭게 개념을 익힐 필요가 있는 연구자들에게도 많은 도움을 줄 것이다. 이 책에서 다루고 있는 과학프로그래밍 파이썬 라이브러리는 scipy, numpy, matplotlib 등이다.
다른 책과 달리 주피터(Jupyter)라는 고급 웹 기반 툴을 사용한 실습을 소개한다. 주피터는 파이썬뿐 아니라 R과 Julia를 사용해도 인터랙티브 코딩이 가능하다. 또한 분산 처리도 지원하하므로 이 책에서 다뤘던 주제들을 수행해보기 좋은 플랫폼이라고 생각한다.
쉬운 용어를 바탕으로 저술됐기 때문에 관련 분야의 기초 개념만 갖고 있어도 내용을 이해하는 데는 무리가 없을 것이다. 직접 시스템을 구현해보고 그 동작 원리를 파악하면서 분산 처리 및 과학 프로그래밍을 이해하길 바란다.

옮긴이 소개

배진호

웨이브엠 책임 연구원으로, 물류 로봇의 자율 주행 애플리케이션과 펌웨어 연구 개발 업무를 담당하고 있다. 서울과학기술대학원에서 기계설계로봇공학 석사 학위, 로즈헐맨공과대학(Rose-hulman Institute of Tech)에서 레이저공학 석사 학위를 받았다. 새로운 것을 배우고, 문제를 해결했을 때의 성취감에 매료돼 공학에 빠져들었다. 역서로는 에이콘출판사에서 출판한 『ROS 로보틱스 프로그래밍』(2017)이 있다.

목차

목차
  • 1장. 싱글 보드 컴퓨터와 라즈베리 파이의 소개
    • 싱글 보드 컴퓨터
      • SBC와 범용 컴퓨터의 차이
      • 시스템 온 칩
      • SBC의 역사
      • 대중적인 SBC 계열
    • 라즈베리 파이
    • 라즈베리 파이 설정
      • 라즈베리 파이 설정을 위해 필요한 하드웨어
      • 라즈베리 파이를 위해 MicroSD 카드 준비
      • 필요한 무료 소프트웨어의 다운로드
      • 라즈베리안 OS를 MicroSD 카드에 쓰기
      • VGA 모니터를 사용하는 경우, config.txt의 내용 변경
      • 파이 부팅
      • 파이의 환경 설정
    • 라즈비안
    • config.txt
    • 네트워크와 인터넷에 라즈베리 파이 연결
      • 와이파이
      • 이더넷
    • 파이의 업데이트
      • 펌웨어 업데이트
      • 라즈비안의 업데이트와 업그레이드
      • raspi-config의 업데이트
    • 라즈베리 파이의 종료와 재시작
    • 결론

  • 2장. 중요한 리눅스 명령어와 원격 연결
    • 중요하고 유용한 리눅스 명령어
      • 리눅스 명령어 도움말
      • 네트워크 관련 명령어
    • 시스템 정보 명령어
      • CPU 관련 정보
      • 메모리 관련 정보
      • 시스템과 OS 버전 정보
      • 파티션 관련 정보
      • 기타 유용한 명령어
    • raspi-config로부터 SSH하기 위해 파이 활성화
    • 윈도우에서 원격으로 라즈베리 파이에 연결
      • 다른 컴퓨터에서 파이에 연결 확인
      • PuTTY
      • 원격으로 라즈베리 파이 데스크톱에 접근
      • WinSCP
    • 리눅스와 맥OS를 사용한 라즈베리 파이로 연결
      • SSH로 원격 로그인
      • SSH를 사용해 전달
      • 파일 전송을 위한 SCP
    • 결론

  • 3장. 파이썬 소개
    • 파이썬의 역사
    • 파이썬의 특징
      • 단순함
      • 배우기 쉽다
      • 읽기 쉽다
      • 코드 유지보수가 쉽다
      • 오픈소스
      • 하이 레벨 언어
      • 이식성
      • 인터프리터
      • 객체지향성
      • 확장성
      • 풍부한 라이브러리
      • 강건성
      • 신속한 프로토타입
      • 메모리 관리
      • 영향력 있는 언어
      • 커뮤니티 지원
    • 파이썬 3
      • 파이썬 2와 파이썬 3 사이의 차이
      • 왜 파이썬 3을 사용하는가?
    • 라즈비안에서 파이썬 2와 파이썬 3
    • 파이썬 프로그램과 파이썬 모드의 실행
      • 인터랙티브 모드
      • 노멀 모드
    • 파이썬을 위한 IDEs
      • IDLE
      • Geany
    • 결론

  • 4장. 슈퍼컴퓨팅의 개요
    • 슈퍼컴퓨팅의 개념
    • 슈퍼컴퓨터의 간략한 역사
    • 클러스터
      • 이종 클러스터
      • 베오울프 클러스터
    • 병렬성과 동시성
      • 병렬성
      • 동시성
      • 병렬 프로그래밍
    • 결론

  • 5장. 메시지 전달 인터페이스
    • 메시지 전달 인터페이스
      • MPI 표준의 역사와 발전
      • MPI의 특징
      • MPI의 구현
    • MPI4PY
      • 파이썬, MPI4PY, MPI 조합을 사용하는 이유
      • 라즈비안에서 파이썬 3을 위한 MPI4Y 설치
    • nmap의 설치
    • 결론

  • 6장. 슈퍼컴퓨터 구축
    • MicroSD 카드의 백업
    • 슈퍼컴퓨터의 노드 준비
    • 파이들의 네트워크
      • DHCP를 사용하는 LAN
      • 와이파이 네트워크
      • 정적 IP 주소를 사용하는 LAN
    • 파이의 IP 주소를 찾기 위한 nmap의 활용
    • mpirun으로 멀티 파이에서 호스트명 명령어 실행
      • 자동 인증을 위한 ssh-keygen 키 교환
    • 클러스터에서 파이의 조직
    • 결론

  • 7장. 라즈베리 파이 오버클럭킹
    • 라즈베리 파이 오버클럭킹의 위험성
    • 파이에 방열판 설치
      • 방열판의 구매
    • raspi-config를 이용한 파이의 오버클럭킹
    • /boot/config.txt를 이용한 파이의 오버클럭킹
      • /boot/config.txt 내의 옵션
    • 다양한 파이 모델에 대한 /boot/config.txt 옵션
      • 파이 B와 파이 B+를 위한 옵션
      • 파이 2를 위한 옵션
      • 파이 3을 위한 옵션
    • 결론

  • 8장. 파이썬 3에서 병렬 프로그래밍
    • MPI4PY의 기초
    • MPI4PY로 시작
    • 조건문
    • 프로세스 개수 확인
    • 데이터의 송수신
    • 동적 데이터 송수신
    • 데이터 태깅...
    • 데이터 브로드캐스팅
    • 데이터 분산
    • 데이터 수집
    • 결론

  • 9장. SciPy 스택과 심볼릭 프로그래밍 소개
    • 과학 파이썬 스택
    • SciPy 스택의 설치
    • SymPy
      • SymPy 시작
      • 심볼
      • SymPy 표현식으로 문자열의 변환
      • SymPy의 출력 기능
      • SymPy에서 단순화
      • 미적분
    • 결론

  • 10장. NumPy 소개
    • NumPy의 기초
      • 주피터
      • 주피터 노트북스
      • N차원 배열(ndarray)
    • ndarray 속성
      • 데이터 타입
    • 배열 생성 루틴
    • 행렬과 선형 대수
    • 삼각 메서드
    • 난수과 통계
    • 푸리에 변환
    • 결론

  • 11장. SciPy 소개
    • SciPy에서 과학과 수학 상수
    • 선형 대수
    • 적분
    • 보간
    • 결론

  • 12장. SciPy를 활용한 신호 처리
    • 파형
    • 창 함수
      • 멕시코 모자 파형
      • 컨볼루션
    • 결론

  • 13장. SciPy를 활용한 처리
    • 첫 번째 영상 처리 프로그램
    • 간단한 영상 처리
    • 영상 처리를 위한 NumPy 소개
    • 영상 처리를 위한 Matplotlib
    • 이미지 채널
    • 결론

  • 14장. Matplotlib
    • 이미지 읽기
    • 컬러 맵
    • 컬러 바
    • 영상 처리를 위한 matplotlib
    • 보간 메서드

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

[p. 180 : 아래에서 6행]
(3, 3, 3)
->
(2, 3, 3)