"멀티프로세서 프로그래밍"이라는 책, 읽어보신분?

NN의 이미지

최근 "멀티프로세서 프로그래밍"이란 책이 번역되어 나왔는데
(원제는 The Art of Multiprocessor Programming 이군요..
원제를 살리는 번역 제목이 좀 아쉽다는...)

http://www.aladdin.co.kr/shop/wproduct.aspx?isbn=8979146825

한빛에서 나온거라 기본적으로 믿을만하다고 생각하다가
어딘가에서 번역이 별로라는 얘기가 있어서 번역본 구입하기가 좀 망설여지는군요.

혹, 이 책 보신분 계신가요?(원서로라도요) 미리 보신분 계시면 책 상태에 대해
약간의 정보라도 나눕시다.

교과서 스타일이라고 하니 좀 진득하게 봐야 할 책인듯 하지만
목차를 보면 군침흘리면서 볼만한 내용이 많아보입니다.

OpenSnake의 이미지

멀티프로세서가 듀얼코어나 쿼드코어을 의미하는게 맞는건지요?
그렇다면 코어 두개을 이용한 소프트웨어 개발론이라는 애기인거같은데요..
저도 처음봤을때..."응 그럴수있겠다." 라고 생각했는데...좀 더 생각해보니

소프트웨어적으로 뭐가 틀릴까? 싶더라구요...?
왠지 속도차이도 그다지 많이 나아보이지는않구요..

이걸 하면서 장점같은게 있나요?...아니면 단지 재미로?

--------------------------------------------
혼자있고 싶습니다. 모두 지구밖으로 나가주세요.

--------------------------------------------
혼자있고 싶습니다. 모두 지구밖으로 나가주세요.

소타의 이미지

코어가 여러개일 수도 있고 시피유가 여러개일 수도 있는 상황 모두에 대한 것인것 같네요.
목차를 보니 흥미가 있는 내용이네요.
개발하다보면 "시피유 하나" 또는 "멀티 프로세서 + 싱글 프로세서" 일 때와 "멀티 프로세서 + 쓰레드" 때의 개발이 너무 다른 것 같습니다.
후자가 머리가 터진다능..
특히 서버 개발을 하게 되면 이 책에 나오는 내용은 좀 알아야 하지않나 싶습니다.

NN의 이미지

저도 책을 읽어본 상태가 아니라 뭐라 말씀드리긴 어려운데
일반론으로 말씀드리면 예전엔 좀 달랐지만
현재는 듀얼코어..쿼드코어..n코어를 멀티프로세서라고 생각하는 경향이 있습니다.
(더 자세하게 말하려면 SMP, MPP.. 공유메모리, 공유캐시등등의 전문 개념들이
줄줄이 튀어나와야 하므로 패스~)

아마 이 책도 옛날것이 아니기 때문에 멀티코어시스템을 염두에 둔거라 생각됩니다.
왜냐면 멀티코어라는게 비교적 최근 기술이고..(2000년대 초중반까지는 최근으로 쳐주죠)
대중화된지도 얼마되지 않았으니 이런 새로운 플랫폼에 맞는 프로그래밍 테크닉을
퍼뜨리는 책이 나오는건 어찌보면 당연한 수순이거든요.

하지만 꼭 멀티코어에 맞는 내용만 나와있는것도 아닐거고..
아마 담고 있는 컨텐츠는 좀 더 보편적이리라 생각됩니다.
그런 의미에선 이 책도 멀티코어보다는 병렬프로그래밍
방점을 찍어야 하지 않나 생각합니다.

소프트웨어적으로...병렬프로그래밍과 일반 프로그래밍은 상당히 많은 차이가 납니다.
프로그래밍 방법이 다르다기보다는 고려해야 할 것들의 질과 양에서 큰 차이가 납니다.

그리고 병렬 프로그래밍을 단지 재미로(just for fun?)하는 사람도 있겠지만..
아마 대부분은 필요에 의해 공부할걸요?

Necromancer의 이미지

아는것보다 하는것이 더 중요하죠.
제온 듀얼 시리즈로 바꾸신 뒤에 직접 멀티프로세서 프로그램 만들어서 운영해보시고 나서 이 글 올리시는게 더 잘 전달될듯 합니다.

Written By the Black Knight of Destruction

Written By the Black Knight of Destruction

ifree의 이미지

원래 멀티프로세서는 씨피유가 여러개인 것을 말하는데 이 책에서는 멀티코어까지 포함한 개념으로 보이는군요.
책의 내용은 코어 두개를 이용한 소프트웨어 개발이 아니고, 코어 두개를 쓰는 프로그램을 개발하는 방법입니다.
쓰레드 간의 독립 실행이 쉬운 3D 렌더링 같은 프로그램에서는 멀티쓰레드가 상당한 위력을 밭휘하는데 신 버전이 발표예정인 MaxwellRender 같은 경우는 수행속도가 코어 수에 거의 비례한다고 하네요.

C++ 프로그래머들은 좀 골치가 아프게 돼간다는 느낌이...
스칼라나 클로져 같은 언어는 너무 쉽게 멀티쓰레드를 구현해서 화가 난다는..

neweapon의 이미지

저도 처음엔 고작 lock과 contention 정도 고려한 프로그래밍이라 생각한 적이 있었습니다.
하지만, 또 들여다보면 볼 수록 모르는 것과 신기한게 수두룩하기도 하더군요.

저는 저 책을 보진 않아서 무슨 내용을 다루고 있는지는 잘 모르지만,
다음 article과 같은 것이 있군요. 뭐, 유명할만큼 유명하기도 하지만...
물론, 시스템 영역에 주로 적용될만한 내용이긴 하지만, 퍼포먼스가 중요한 시스템에선 반드시 알아야할 내용들입니다.

Ulrich Drepper, < What every programmer should know about memory >
http://lwn.net/Articles/250967

prio의 이미지

책 내용에는 별 다섯개!
번역본은 읽어보지 않아서 번역이 별로인지는 모르겠네요.

이미 "교과서 스타일"이라고 알고 계신 것처럼,
주된 내용은 mutual exclusion을 보장하는 여러 방법들의 원리라던지,
병렬 자료구조 등을 다루고 있어서
병렬 프로그래밍을 하는 개발자들이라면 반드시! 알아야 할 내용을 담고 있는 책입니다..만.
기본기가 늘 그렇듯 지루하고 비현실적인 느낌이 들어 외면당할 위험도 있지요. ㅎㅎ

하지만 찬찬히 잘 읽어보고
대상 아키텍처의 특성을 고려해서 적절히 원리를 응용할 수 있으면
실제 개발에 당장 써먹을 수 있는 내용도 상당히 많습니다.

대신 예제 코드에는 손 봐야 할 부분이 종종 눈에 띄더군요.
내용을 제대로 이해했는지 검증하는 셈 치고 긴장하면서 읽게 만드는 효과랄까. -_-;;;

blueiur의 이미지


상당히 저수준 까지 다루고 있고, 원리에 대해서 많이 나옵니다.
대충 훑어만 봤는데 재미있게 보긴 어려운 책이더군요 :)

charsyam의 이미지

좋은책입니다. 멀티코어와 병렬 프로그래밍은 다르겠지만...

일단 Lock-Free Wait-Free 부터 시작해서 여기저기서 문제가 될 수 있는

ABA Problem 등등 캐시 문제 등등등 여러가지 재미있는 내용이 많이 있습니다.

단, 읽다가 머리가 터지는 건 T.T 흑흑흑(잘 이해가 안가요!!!)

고운 하루되시길...

=========================
CharSyam ^^ --- 고운 하루
=========================

=========================
CharSyam ^^ --- 고운 하루
=========================

Necromancer의 이미지

책을 보는것보다는 그걸보고 직접 해보심이.

Written By the Black Knight of Destruction

Written By the Black Knight of Destruction

jinyeong의 이미지

번역서는 모르겠고.. 원서의 내용은 좋습니다.
"The Art of" 가 붙을 정도인지는 모르겠지만...

I thought what I'd do was,
I'd pretend I was one of those deaf-mutes.. or should I?

jekyo의 이미지

휴일에 나들이 삼아서 서점에 가보시는 것이 가장 좋겠습니다.

잠깐 목차만 훑어 봤는데.. 상당히 전문적인 내용들인 것 같았고

배경 지식도 필요한 듯 보였고, JAVA도 잘 알아야겠더군요

저같은 사람은 읽기가 불가능해 보였습니다.