이미 소장하고 있다면 판매해 보세요.
|
1장. IPython을 사용한 고성능 컴퓨팅 __속도의 필요성 __포트란으로 해결 - 포트란이 다룬 문제 ____가독성 ____이식성 ____효율성 ____컴퓨팅 환경 __IPython과 포트란 중 선택 ____포트란 ____IPython ________객체지향 ________채택의 편이성 ____대중성 - 포트란 대 IPython ________유용한 라이브러리 ____소프트웨어 개발(과 유지보수) 비용 ________요구사항과 명세 얻기 ________개발 ________실행 ________테스트와 유지보수 __대안 ________교차 언어 개발 ________프로토타이핑과 탐색 개발 __사례 - 고속 푸리에 변환 ____고속 푸리에 변환 ________포트란 ________Python __성능 관점 __소프트웨어 공학 관점 ________복잡도 기반 측정 ________크기 기반 측정 ____현황 __고성능 컴퓨팅 ____고성능 컴퓨팅 학습 곡선 ____넘쳐나는 병렬화의 기회(아마존의 컴퓨터는 사용자의 컴퓨터보다 크다) ____고성능 컴퓨팅과 병렬화 ____클라우드와 고성능 컴퓨팅 __병렬 ____용어 ____병렬 프로그래밍 예제 ________직렬 프로그램 ________병렬 동등 ________논의 __요약 2장. 고급 셸 주제 __IPython이란? __IPython 설치 __통합 배포 ____Mastering ____콘다로 패키지 관리 __캐노피 패키지 매니저 __노트북의 변화터미널에서 시작하기 __파이썬을 뛰어넘는 IPython ____셸 통합 ____히스토리 __매직 명령어 ____맞춤형 매직 명령어 생성 __싸이썬 __IPython 설정 __디버깅 ____사후 분석 디버깅 ____구동 시 디버깅 ____디버거 명령어 __읽기 - 평가 - 출력 루프와 IPython 아키텍처 __대안 개발 환경 ____스파이더 ____캐노피 ____PyDev ____그 밖의 환경 __요약 3장. IPython을 사용한 병렬 컴퓨팅 __직렬 프로세스 ____프로그램 카운터와 주소 공간 ____배치 시스템 ____멀티태스킹과 선점 ____시분할 __스레딩 ____파이썬으로 스레딩 ____예제 ____스레딩의 한계 ____전역 인터프리터 락 ________인터프리터가 하는 일 ________CPython ________멀티코어 장비 ________전역 인터프리터 락 제거 __다수의 프로세서 사용 __IPython 병렬 아키텍처 ____개요 ____컴포넌트 ________IPython 엔진 ________IPython 컨트롤러 ________IPython 허브 ________IPython 스케줄러 __ipyparallel 시작하기 ____ipcluster ____Hello world ____map_sync 사용하기 ____비동기 호출 ____동기식 임포트 __병렬 매직 명령어 ____%px ____%%px ____%pxresult ____%pxconfig ____%autopx __병렬화 유형 ____SIMD ____SPMD ________ipcluster와 mpiexec/mpirun ________ipcluster와 PBS ________엔진 구동 ________컨트롤러 구동 ________스크립트 사용하기 ____맵리듀스 ________스캐터와 개더 ________더 정교한 방법 ____MIMD ____MPMD ____태스크 파밍과 부하 분산 ________@parallel 함수 장식자 __데이터 병렬화 ____데이터 종속성이 없는 경우 ____외부 데이터 종속성 __애플리케이션 조종 ____디버깅 ____사전 사후 분석 디버깅 ____안전한 종료 __요약 4장. 제로MQ와 MPI를 사용한 메시징 __저장소 계층 구조 ____주소 공간 ____데이터 지역성 __제로MQ ____예제 제로MQ 프로그램 ________서버 ________클라이언트 ____제로MQ의 메시징 패턴 ________양방향 ________클라이언트와 서버 ________게시와 구독 ________푸시와 풀 ____제로MQ의 주요 특징 ____제로MQ 사용 시 이슈 ________시작과 종료 ________프로세스 찾기 __MPI ____Hello World ____순위와 역할 ____점대점 커뮤니케이션 ____브로드캐스팅 ____리듀스 ____논의 ________설정 변경 ________작업 분할 ________작업 분배 ____프로세스 제어 ________마스터 ________워커 __제로MQ와 IPython ____제로MQ 소켓 타입 ____IPython 컴포넌트 ________클라이언트 ________엔진(들) ________컨트롤러 ________허브 ________스케줄러 ________연결 그림 ____메시징 유스케이스 ________등록 ________심장 박동 ________IOPub __요약 5장. 툴킷 - IPython API __성능 프로파일링 ____utils.timing ____%%timeit 사용 ____%%prun 사용 __AsyncResult 클래스 ____multiprocessing.pool.Pool ________블로킹 메서드 ________논블로킹 메서드 ________결과 획득 ________다양한 메서드를 사용한 예제 프로그램 ____mp.pool.AsyncResult ________결과 획득 ________다양한 메서드를 사용한 예제 프로그램 ____AsyncResultSet 메타데이터 ________메타데이터 키 ________그 밖의 메타데이터 __Client 클래스 ____속성 ____메서드 __View 클래스 ____View 속성 ____파이썬 함수 호출 ________동기식 호출 ________비동기식 호출 ________설정 호출 ________잡 제어 __DirectView ________데이터 이동 ________임포트 ________논의 ____LoadBalancedView ________데이터 이동 ________임포트 __요약 6장. IPython과 외부 도구 통합 __R ____rpy2 모듈/확장 ________rpy2 설치 ____Rmagic 사용 ________%R 매직 ________%%R 매직 ________푸시와 풀 ____그래픽 ____rpy2.robjects 사용 ________기초 ________문자열을 R로 인터프리팅 __옥타브 ____oct2py 모듈과 확장 ________oct2py 설치 ____옥타브 매직 사용 ________%octave 매직 ____%%octave 매직 ____푸시와 풀 ____그래픽 ____옥타브 모듈 사용 ________푸시와 풀 ________옥타브 코드 실행 __하이 ____hymagic 모듈과 학장 ________hymagic 설치 ____hymagic 사용 ________%hylang 매직 ________%%hylang 매직 ____하이 간단 소개 ________Hello world! ________괄호에 익숙해지기 ________뜬금없는 위치에서의 산술 연산 ________연쇄적 연산은 어디서든 가능하다 ________하이의 제어 구조 ________파이썬 호출 __요약 7장. 백문이불여일견 - 시각화 __Matplotlib ____matplotlib 시작 ____초기 그래프 ____그래프 수정 ____대화형 제어 __보케 ____보케 시작하기 ____초기 그래프 ____그래프 수정 ________그래프 맞춤화 __대화형 플롯 ________대화형 플롯 예제 __R ____ggplot2 설치와 판다스 ________데이터 프레임 사용 ____초기 그래프 ________그래프 수정 ________다른 관점 __파이썬-nvd3 ____파이썬-nvd3 시작하기 ____초기 그래프 ____여러 도구를 함께 사용하기. ____다른 종류의 플롯 __요약 8장. 데모로는 부족해! - 테스트 __단위 테스트 ____간단한 소개 ________어서션 ________환경 이슈 ________테스트하기 쉽도록 테스트 작성 __unittest ____주요 개념 ____setUp과 tearDown을 사용한 테스트 ________일회성 setUp과 tearDown ____장식자 __pytest ____설치 ____후방 호환성 ____테스트 찾기 ____테스트 파일 구성 ____어서션 ____setUp과 tearDown을 사용한 테스트 ________전통적인 xUnit방식 ____픽스처 사용 ________누락과 실패 ____몽키패치 __nose2 ____설치 ____후방 호환성 ____테스트 찾기 ________각 테스트 실행 ____어서션과 설정, 해제 ________xUnit방식의 수정 ____장식자 사용 ____플러그인 ________junitxml 플러그인으로 XML 생성 __요약 9장. 설명서 __한 줄 주석 ____한 줄 주석 사용하기 ____함수 표기 ________문법 ________시맨틱 ____타입 힌트 ________문법 ________시맨틱 __문서화 문자열 ____예제 ________문서화 문자열 상속 ____추천 요소 ________한 행 문서화 문자열 ________문법 ________다수 행 문서화 문자열 ____예제 __RST(reStructuredText) ____역사와 목표 ____고객 ____해결안 ____개요 ________문단 ________텍스트 방식 ________글머리 ________하이퍼링크 ________섹션 __Docutils ____설치 ____용법 ____소스 파일 명세 __스핑크스 ____설치와 시작 ____소스 파일 명시 __요약 10장. 주피터 __설치와 시작 __대시보드 __노트북 생성 __파이썬 스크립트와 상호작용 __셀 작업 ____셀 트릭 ________셀 범위 ________셀 실행 ________재시작과 모두 실행 ________매직 ____셀 구조 ________코드 셀 ________마크다운 셀 ________로우 셀 ________헤딩 셀 __그래픽 생성 ____matplotlib 사용 ____보케 사용 ____R 사용 ____파이썬-nvd3 사용 __형식 변환 ____그 외 형식 ____nbviewer __요약 11장. 미래 __역사 __주피터 프로젝트 ____노트북 ____콘솔 ____주피터 클라이언트 ____주피터의 미래 ________공식 로드맵 ________공식 하위 프로젝트 ________인큐베이션 __IPython ____현재 활동 __병렬화의 대두 ____메가헤르츠 전쟁의 종말 ____문제점 ____과거와의 유사점 ____현재 ________문제는 더 커지고 어려워진다 ________컴퓨터는 더 병렬화되고 있다 ________클라우드가 밀려온다 ________방법이 없다 __성장하는 전문성 ____NSF ________지속적인 혁신을 위한 소프트웨어 인프라 __요약 |
Thomas Bitterman
심지현의 다른 상품
|
이 책에서 다루는 내용
* 고성능 컴퓨팅에 IPython을 사용하는 개발 기술 * IPython 인터랙티브 쉘의 이해 * 제로MQ와 MPI를 사용한 메시지 전송 * R, 줄리아, 자바스크립트와 같은 외부 도구와 IPython의 통합 * 데이터 시각화 * 데이터 테스트, 설명서 작성 방법 * 주피터 노트북 시스템의 최신 개발 이해 이 책의 대상 독자 IPython을 최대한 활용해 인터랙티브 컴퓨팅을 쉽게 이용하며 IPython으로 고급 과학 컴퓨팅을 수행하려는 IPython 개발자를 위한 책이다. IPython 6.0의 대화형 특징과 병렬 컴퓨팅 측면, 그 외 외부 도구와의 통합, 테스트, 설명서 같은 개념을 함께 배우려는 사용자에게 이상적이다. 지은이의 말 고성능 병렬 환경에서 활약 중인 IPython 6.0의 세계에 온 걸 환영한다. 지금까지는 파이썬이 관련 분야를 선도해왔으며, 이러한 강점을 기반으로 IPython이 만들어졌다. 고성능 컴퓨팅(HPC, High-performance computing)에는 다른 대다수 컴퓨팅 영역과 구별되는 많은 특징이 있다. 고성능 컴퓨팅의 특징과 IPython이 어떻게 판도를 바꾸는 기술이 될 수 있을지 간단히 요약한다. 우선 IPython 명령행을 설명한다. 주피터를 IPython 프로젝트로부터 분리했으므로 명령행은 개발자가 IPython 언어와 소통하는 기본 수단이다. 두 장에 걸쳐 설명할 만큼 중요한 주제다. 1장은 기초 명령어에 중점을 둬 IPython의 명령어 수행 방법을 설명한다. 2장은 좀 더 고급 명령어를 다루면서 명령행이 반드시 제공해야 하는 기능을 이해시킨다. 이어서 병렬 프로그래밍의 세부적인 내용을 설명한다. IPython에서 병렬 기능은 하나의 패키지로서 IPython으로 병렬 컴퓨팅을 수행하는 데 필요한 수많은 기능을 포함한다. 이 패키지는 유연한 병렬 프로그래밍 모델을 지원하며, 다중 병렬 아키텍처를 활용하는 데 매우 중요하다. 서로 다른 프로세서에서 병렬로 실행되는 프로그램들은 별도의 주소 공간이 있다 해도 종종 정보를 교환해야 한다. 이때 메시지 전송을 이용한다. 메시징 시스템인 제로MQ와 MPI를 소개하고, 두 시스템이 기존 프로그램에서 어떻게 쓰이며 IPython과 어떻게 상호작용하는지 다룬다. 사용자의 생산성을 강화할 수 있는 라이브러리도 자세히 알아본다. IPython 내에 들어있는 라이브러리와 외부 도구에서 제공하는 라이브러리를 포괄한다. 이 책이 다루는 많은 도구뿐만 아니라 다른 책에서도 계속 여러 도구를 설명하고 있지만, 병렬과 고성능 컴퓨팅 프로젝트에 적용할 만한 도구는 많지 않다. IPython의 중요한 기능은 데이터셋과 결과의 시각화 지원이다. 언어에 내장된 기능과 외부 도구를 통한 지원을 포함해 IPython의 폭넓은 기능을 설명한다. IPython에 대한 설명은 테스트와 설명서를 다루며 마무리한다. 종종 도외시되는 주제지만, 실패한 코드와 전문 코드를 분리해낼 때 중요하다. IPython이 2개발 단계를 어떻게 지원하는지 살펴본다. 끝으로 병렬 컴퓨팅 분야의 흐름을 논한다. 모든 기술이 늦어도 한 해 걸러 한 번씩은 변하는 점이 프로그래밍의 재미 중 하나다. 미래에 일어날 일을 예상해보자. 옮긴이의 말 오늘날은 바야흐로 빅데이터의 세상이다. 빅데이터가 일상에 깊숙이 스며들면서 대용량 분산 처리를 넘어 고성능 컴퓨팅과 병렬 컴퓨팅의 필요성도 자연히 커졌다. 과거 포트란이 주도하던 이 분야에 새롭게 등장한 강자가 바로 IPython이다. IPython은 Interactive Python의 약자로 기존의 배치 처리 방식이 아닌 시스템과의 인터랙션을 강조한 고성능 컴퓨팅 언어다. IPython의 개발자인 페르난도 페레즈는 전통적인 파이썬에서 벗어나 명령행에서 인터랙티브하게 수행될 수 있는 노트북 형식의 인터페이스를 만들고자 했다. 그 결과 파이썬의 여러 강점과 객체지향 패러다임을 포함하는 IPython이 탄생했다. 이 책은 고성능 병렬 컴퓨팅의 관점에서 IPython이 갖는 고유한 특징을 면밀히 소개하고, 실제 프로젝트에 적용할 수 있도록 다양한 예제로 패키지와 라이브러리를 설명한다. 독자가 이해해야 할 핵심은 크게 세 가지다. 첫째, 고성능 병렬 컴퓨팅을 가능케 하는 IPython의 내부 병렬 아키텍처와 메시징 시스템이다. IPython의 병렬 아키텍처는 기본적으로 엔진, 컨트롤러, 허브, 스케줄러라는 네 개의 컴포넌트로 구성되는데, 실제 병렬 잡을 수행하는 엔진과 이를 관리하는 컨트롤러 (허브와 스케줄러를 포함)가 어떻게 동작하는지 보여준다. 또한 ipyparallel 라이브러리로 다양한 유형의 병렬 구조를 지원하는 방식도 설명한다. 더불어 병렬 프로세스 간 커뮤니케이션을 지원하는 대표적인 메시징 시스템인 제로MQ와 MPI도 살펴본다. 특히 제로MQ가 IPython의 내부 메시징 프레임워크로서 어떻게 쓰이고 있는지 예제와 함께 알아본다. 둘째, 앞서 설명한 병렬 아키텍처를 쉽고 효율적으로 다룰 수 있는 IPython의 내부 라이브러리를 알 수 있다. IPython이 제공하는 API를 사용하면 병렬 계산 결과에 접근하고 조작하거나 성능 프로파일링 등을 수행할 수 있다. 이 중 비동기식 호출을 가능케 하는 AsyncResult, 잡을 제어하는 Client 클래스, 여러 엔진을 하나의 엔티티처럼 다룰 수 있는 DirectView, 스케줄러를 사용해 블로킹 없이 다수의 잡을 실행하는 LoadBalancedView를 중점적으로 살펴본다. 셋째, IPython을 더욱 풍부하게 사용할 수 있는 외부 도구와 언어를 다룬다. 이 책은 두 가지 목적으로 나눠 설명하는데, 먼저 복잡한 컴퓨팅을 지원하는 외부 언어와의 통합이다. 통계에 적합한 R, 수 계산에 특화된 옥타브, 빅데이터 분석에 유용한 하이 등을 논한다. 다음은 데이터 시각화를 위한 외부 도구와의 통합이다. 파이썬 기반의 2D 그래프 라이브러리인 matplotlib, 파이썬 대화형 시각화 라이브러리인 보케, 그리고 R 등을 예제 코드와 함께 다룬다. 이 밖에도 모든 개발 프로젝트의 기본인 테스트와 설명서도 빼놓지 않는다. 과학과 공학 분야에 걸쳐 고성능 컴퓨팅 자원을 반드시 필요로 하는 문제들이 점차 늘어나고 있다. 또한 높은 성능과 확장을 위해 클라우드와 같은 병렬 컴퓨팅에 점점 더 의존하고 있다. IPython은 병렬 컴퓨팅을 위한 새로운 아키텍처와 병렬 장비로의 강력하고 유연한 인터페이스를 제공한다. 이 책을 통해 고성능 병렬 컴퓨팅에 IPython을 적극적으로 활용해보고 IPython의 가치를 스스로 평가해보길 바란다. |