인텔 스레딩 빌딩 블록 : 멀티코어 프로세서 병렬처리를 위한 C++ 기술
엄청난 추천사를 보유하고 있는 도서가 출간 대기 중입니다. 현재 인터파크, 강컴, 예스24, 11번가도서를 통해서 예약 판매 중입니다. (요즘 교보문고 회원들께 죄송합니다. 항상 예약판매에 대한 기회를 제공하고 있으나 교보문고에서 답변이 너무 늦거나 메일 확인을 제대로 하지 못해서 교보문고 회원들께는 10% 할인의 기회를 드리지 못하고 있습니다.)
이 책은 인텔 스레딩 빌딩 블록(TBB)을 사용하여 멀티코어 프로세서의 효용성을 극대화할 수 있는 방법을 알려줍니다. 이 책을 통해, 여러분은 스레딩 전문 지식이 없이도 병렬 프로그래밍을 할 때 TBB를 효과적으로 사용하는 방법을 배울 것입니다.
인텔 소프트웨어 제품 팀의 책임자인 제임스 레인더스는 인텔의 개발자와 고객들에 대한 경험을 기초로 이 책을 저술했는데, 멀티스레딩에 대한 핵심 작업들을 설명하며 TBB를 사용하여 이식성이 뛰어나고 튼튼한 구조를 가진 애플리케이션을 작성하는 방법을 알려줍니다.
인텔 스레딩 빌딩 블록은 C++에서 병렬 처리를 할 때 TBB를 사용함으로써 원초적인 스레드를 사용하는 것보다 훨씬 더 편리하면서도 성능, 이식성 및 조정성을 향상시킬 수 있는 방법을 제공해 주며, 멀티코어 시스템에서 실행되는 프로그램을 작성하고자 하는 C++ 프로그래머라면 누구나 이 책을 통해 큰 도움을 받을 것이라고 믿습니다.
이 책의 엄청난 추천사를 미리 볼까요?
"직렬처리 방식의 컴퓨팅 시대는 끝났다. 멀티코어 프로세서의 출현으로, 대학교나 전문기관에서만 연구되어왔던 병렬 컴퓨팅 기술은 이제 대세가 되고 있다. 인텔 스레딩 빌딩 블록(Threading Building Blocks)은 15년 전 MIT의 Cilk 시스템으로 개발된 '작업 스틸링(work-stealing)' 기술을 상당히 확장시키고 업데이트한 최신 기술이며, 동시 프로그래밍을 위한 강력한 C++ 라이브러리를 제공해준다. 이 책은 이 새로운 라이브러리에 대해 잘 소개해 줄 뿐만 아니라, 초보자와 전문가 모두에게 동시성에 대한 복잡한 내용을 명쾌하고 쉽게 설명해준다."
- 찰스 레이서슨(Charles E. Leiserson), MIT 컴퓨터 공학 및 인공지능 연구소
"먼저 올바르게 만든 다음에 빠르게 만들라고 입버릇처럼 말하곤 했다. 하지만 더 이상 그럴 필요가 없게 되었다. 우리는 Maya 개발에 TBB를 기반으로 사용함으로써 정확성과 속도 문제를 한꺼번에 해결할 수 있었다. 이 책에서는 여러분의 코드에 TBB를 사용하면 얼마나 많은 이익을 얻을 수 있는지 보여준다."
- 마틴 와트(Martin Watt), 오토데스크 사의 소프트웨어 개발 책임
"TBB는 C++에서 병렬 프로그래밍 방식에 큰 변화를 가져왔다. 따라서 이 책은 모든 C++ 프로그래머에게 상당히 유용할 것이다. 이 책을 통해, 저자인 제임스는 다음과 같은 두 가지 중요한 목표를 달성한다.
* 병렬 프로그래밍에 대해 멋지게 소개해주며, 가장 일반적인 병렬 프로그래밍 패턴들과 그것들을 용도에 맞게 사용하는 방법을 설명한다.
* 스레딩 빌딩 블록 C++ 라이브러리를 문서화 해주는데, 이 라이브러리는 위 패턴들에 대한 일반화된 알고리즘을 제공해준다.
TBB는 객체지향 병렬 컴퓨팅에 대해, 최근 20년 동안 많은 연구자들이 개발한 최고의 아이디어들을 통합한 결과물이다."
- 마크 스니어(Marc Snir), 일리노이 대학교 어바나-샴페인 캠퍼스의 컴퓨터 공학부 학장
"이 책을 통해 처음 인텔 스레딩 빌딩 블록에 대해 알게 되었다. 구현 특성들과 그 배경 지식을 쉽고 친절한 설명해준데 대해 감사드린다. 이 책을 보면 스레딩 빌딩 블록이 최근에 나온 병렬 프로그래밍 개념들을 멋지게 통합한 걸작임을 분명하게 알 수 있다. 작지만 강력한 패턴 및 전략들의 장점을 골라 모아 누구나 쉽게 배우고 사용할 수 있도록 만들었다. 또한 많은 코드 예제와 실무에서 사용될 수 있는 병렬 응용 프로그램들은 이 라이브러리의 주요 특성들을 이해하는데 큰 도움을 주며, 효율적인 병렬 프로그램을 개발하는데 사용될 수 있는 여러 가지 다른 방법들도 제시합니다."
- 데이비드 파두아(David Padua), 일리노이 대학교 교수
"멀티코어 칩 아키텍처의 출현으로 병렬 프로그래밍에 대대적인 혁신이 일어났고, 사용자들이 그와 같은 도전에 대처할 수 있도록 도와줄 좋은 책이 간절히 필요했다. 스레딩 빌딩 블록에 관한 이 책은 멀티코어를 사용한 병렬 프로그래밍을 원하는 독자들에게 훌륭한 길잡이와 소중한 교과서가 되어 줄 것이다. 또한 여러분에게 C++ 기반의 병렬 프로그래밍 패러다임을 사용하는데 있어서 따라야 할 지름길을 제시해줄 것이며, 병렬 프로그래밍을 위한 강력하고도 실용적인 접근법들을 보여줄 것이다. 이 책은 세심하게 기획 및 집필되었으며, 학생들에게는 교과서로, 현업 기술자들에게는 실무 지침서로 사용될 수 있을 것이다."
- 광 가오(Guang R. Gao), 델라웨어 대학교 교수
"나는 이 책을 정말 즐겁게 읽었다. 이 책은 소프트웨어 개발자에게 새로운 세대의 병렬 프로그램을 작성하기 위해 필요한 새로운 방법들을 제시합니다. 정보 기술의 혼란(여기서는 멀티코어 아키텍처의 등장을 가리킴) 속에서, 이런 책이 절실했던 것이다. 또한 이 책은 학습 교재로서도 손색이 없는데, 소프트웨어 엔지니어들에게 새로운 기회와 도전을 가져다 줄 것이다. 스레딩 빌딩 블록이 취한 라이브러리 기반의 접근법은 진보된 컴파일러 기술에서 사용하는 접근법을 보완해주기 때문에 상당히 새로운 시도이다."
- 루돌프 아이젠만(Rudolf Eigenmann), 퍼듀 대학교 전기컴퓨터공학부(ECE) 교수, 컴퓨팅 연구소 임시 소장
"멀티코어 시스템의 세상이 왔다. 그것을 이용하는 프로그램을 작성하기 위한 병렬 프로그래밍 모델이 필요하게 된 것이다. 또한 순차적 프로그램만 작성해온 프로그래머들이 이 새로운 기술 요구에 적응하도록 도와주기 위한 충분한 교육도 필요하다. 이 책은 이 두 마리 토끼 모두를 잡을 수 있게 해 줄 것이다. ... 스레딩 빌딩 블록(TBB)은 상당히 유연한데, 병렬 프로그램을 작성하는데 있어서 라이브러리 기반의 접근법을 사용하기 때문에 다른 프로그래밍 솔루션들과도 상호 운용이 가능하다.
이 책은 TBB에 대해 재미있고 쉽게 읽을 수 있도록 소개합니다. 초보자를 위한 풍부한 정보를 담고 있을 뿐만 아니라, 경험이 있는 병렬 프로그래머도 기존 지식에 TBB를 적용할 수 있게 해준다."
- 바바라 채프만(Barbara Chapman), cOMPunity의 CEO이자 휴스턴 대학교 컴퓨터 공학과 교수
"차세대 칩은 12개 또는 심지어 백 개의 코어를 장착할 것이다. 병렬 알고리즘이 아닌 순차적 알고리즘을 사용하는 대부분의 프로그래머들에게는 이런 칩이 제공하는 대용량 컴퓨팅 능력의 이점을 이용하는 응용 프로그램을 작성하는 일이 매우 어려운 작업이 될 것이다. ... 인텔 TBB는 이와 같은 어려움을 거뜬히 넘을 수 있게 해주며, 더 좋은 것은 이 기술이 C++ 프레임워크 내에 통합된 것이라는 점이다."
- 에듀어드 아이가드(Eduard Ayguade), 바르셀로나 슈퍼컴퓨터 센터, 카탈루냐 기술 대학교
"인텔 TBB는 마치 C++에서 STL이 사용되는 것처럼 병렬 프로그래밍을 위해 사용된다. STL을 사용한 일반화된 프로그래밍은 C++ 프로그램 작성의 생산성을 엄청나게 향상시켰다. TBB는 동시성 제어를 위한 복잡한 구현은 뒤에 감춘, 일반화된 병렬 프로그래밍 모델을 제공한다. 또한 병렬 코드를 개발하기 위한 기술 장벽을 낮추어 누구든지 멀티코어를 효율적으로 사용하게 해준다."
- 로렌스 라우츠베르거(Lawrence Rauchwerger), 텍사스 A&M 대학교, STAPL의 창시자
"지난 18년 동안 전 세계적으로 얼마 안 되는 슈퍼컴퓨터들에서는 C++를 사용하여 실용적이고도 멋진 병렬 프로그램을 작성하기 위한 방안을 모색해왔다. 그런 노력에 대한 해결책의 일부로서 템플릿과 제네릭 프로그래밍이 사용되었지만, 멀티코어(곧 대량 코어가 될) 프로세서의 등장은 컴퓨팅 세계를 근본적으로 변화하게 만드는 자극이 되었다. 병렬처리는 이제 일상생활이 되어 가고 있다.
모든 C++ 프로그래머는 동시성과 병렬성에 대해 필수적으로 고려해야 할 것이며, 스레딩 빌딩 블록은 이런 기술을 높은 수준에서도 정확하게 사용할 수 있게 해줄 것이다.
이 책은 단순히 C++ 템플릿 라이브러리에 대한 논의가 아니다. 지난 25년 간 병렬 컴퓨팅에 대해 축적된 깊고도 풍부한 내용을 쉽게 전달해준다. 이 책이 병렬 프로그래밍을 가르치기 위한 훌륭한 교과서로도 그 진가를 발휘할 것임을 의심치 않는다."
- 데니스 개넌(Dennis Gannon), 공학 전문가, 인디아나 대학교에 있는 Pervasive 기술 연구소, DARPA의 HPC++(High Performance Computing) 프로젝트의 리더와 글로벌 그리드 포럼의 스티어링 위원회 멤버를 역임한 적이 있다.
"TBB는 여러 가지 장점들로 응용 프로그램 개발자의 가려운 곳을 긁어주는 유용한 기술이다. 이런 장점들에는 프로세서 성능을 최대한 활용할 수 있는 병렬 조정성(parallel scalability), OpenMP를 능가하는 C++ 프로그래밍, OpenMP와 호환성 및 스레드 조작(hand threads), 소프트웨어 개발에 대한 오픈 커뮤니티 지향 등이 있다. TBB를 사용하면 언어 확장에 대한 위험성, 특정 컴파일러 종속성 및 핸드 스레딩 -역시 같음. “스레딩 조작”- 의 복잡성과 같은 여러 가지 제약을 피할 수 있다.
이 책은 무리한 교육이 없이도 개발자들의 생산성을 증가시키는데 도움을 줄 수 있으며, 그들이 생산하는 응용 프로그램의 품질과 성능을 높일 수 있다."
- 데이빗 커크(David Kuck), 인텔 직원, KAI의 창시자이며 이전에 슈퍼 컴퓨팅 연구소의 소장을 역임했었다.