본문 바로가기

Papyrus/Dizzy Report

병렬 GP 컴퓨팅에 대한 Linus Torvalds의 견해?

* >로 시작하는 부분은 David Patterson의 글, 나머지는 Linus의 반박글


> 30년 정도 된 낡은 프로그래밍 언어로 쓰여진 15년 된 오래된 코드에 의해서 발목 잡히는 것보다, 다중 코어가 좀 더 잘 일할 수 있도록 하는 영역을 만들 필요가 있으며, 그런 영역을 사람들에게 제공하고, 그 추상화 정도를 한층 더 올리는 것이 목표다.


음, 당신은 기본적으로 그것들(30년 된 프로그래밍 언어로 쓰여진 15년 된 오래된 코드들이) 동작할거라 가정하고 있지만, 실제로 그렇게 오래된 것으로 할 수 있는 것은 아무 것도 없다.

이건 커다란 가정이다. 즉, 당신이 그런 상황에서 보장할 수 있는 것은 아무 것도 없다는 의미이다. 그리고, 예전부터 결실이 맺어지지 않았던 바램이다. 그리고, 솔직히 말해서, 나는 사람들이 20년 전보다 지금, 더 어떤 해법에 더 가까워졌다고도 생각하지 않는다.

당신이 그렇게 동작하는 응용 프로그램 영역에서 찾을 수 있는 점은, 그것이 새로운 것이 아니라는 사실이다.

CM-5를 가지고 있고, 오컴 프로그램이 있으며, 그들이 동작한다는데 아무런 의문이 없다. 문제는, 이것들이 일반적인 목적의 컴퓨팅을 목적으로 해야 하는지 여부이고, 그것에 대해서 여전히 해답은 제시되지 않았다고 생각한다.

*주. CM-5 : Connection Machine 5, Occam Program : 오컴의 면도날이란, 불필요한 가정을 하지 말라는 원리로, 보다 간단하게 어떤 현상을 설명할 수 있다면 그것을 선택하는 것이 더 낫다는 뜻이다. 여기서는,  이미 주어진 문제를 충분하게 풀어낼 수 있는데도 과도하게 문제를 복잡하게 할 필요는 없다는 뜻으로 쓰인 듯 하다.


> 명백히, 몇몇의 독자들은 우리가 SPEC 벤치마크나 임베디드 EEMBBC 벤치마크, 고성능 컴퓨팅과 같은, 적은 디자인 패턴 목록이 존재하는지 알기 위해 노력하는 데이터베이스, 기계 학습 분야의 전문가들과의 인터뷰를 간과하고 있다.


아니, 나는 사람들이 그것을 간과하고 있다고 생각하지 않는다. 그러나, 당신은, 당신의 해법이 의문들에 적절히 답했다는 것이 불명확했다는, 그 점에 대한 질문들을 너무 과소평가하고 있다.

예를 들어, 물론, 당신은 gcc가 결국 '유한 상태 머신(FSM)'에 불과하다고 불평할 수 있다. 어떤 면에서 무엇이 꽤 FSM(우리는 튜링 완전 문제인가? 아닌가?)같다고 할 때, 그렇다고 그 반쪽짜리가 gcc가 할 수 있는 일을 모두 표현했다고는 말할 수 없다는거다.

내가 일하는 프로젝트 중 하나는 거의, 순수하게 해싱 그래프 탐색인데, 이게 어떤 T에 대한 당신의 반쪽짜리에 적당할거다. 그러나, 이건, 탐색해야만 하는 그래프의 크기를 얼마나 줄일 수 있는가가 가장 큰 문제이지, 그래프를 얼마나 빨리 탐색할 수 있느냐가 문제가 아니다. 이 문제는 CPU 속도의 문제가 아니라, 메모리와 IO 풋프린트에 관한 문제다.

그리고, 나는 이런 식의 문제가 어느 다른 곳에 있을거라 생각하지 않는다. 핵심 알고리즘은 잘 병렬화될 수 있지만, 그렇다고 그 문제는 선형 CPU 속도에 관한 것이 아니며, CPU와 무관한 문제다.


> 우리의 도박(도전? 전망?)은, 최고의 응용 프로그램, 최고의 프로그래밍 언어, 그리고 최고의 라이브러리.. 그 어느 것도 아직 만들어지지 않았다는 것이다.


우리가 만약 100개 이상의 코어를 보고 있는 상황이었다면, 나는 확실히 동의한다.


> 우리가 현장에서, 이런 놀라울 정도로 어려운 도전에서 성공한다면, 미래는 훨씬 더 좋아질 것이다. 그렇지 않다면, 우리가 의존하는 다음 10년 동안의 성능 증가는 갑작스럽게 정체될 것이며 그것은, IT 산업의 미래를 줄이는 것과 마찬가지가 될 것이다.


여기에 내 개인적인 예측이 있다. 아니, 그저 단순한 추측이라고 하자.
a. 대부분의 작업에서, 선형적인 문제가 여전히 우리를 지배하고 있을거다.
b. 이것은, GP 컴퓨팅의 미래가 결국 작고, 저전력이며, 어디에서나 존재하는(==정말 값 싼) 것으로 결론 날 것이라는 점을 의미한다.

다른 말로, 지수적 성능 증가의 예상치는 단순히 우리가 원하기만 하는 것으로 되는 것이 아니란 말이다. 후, 우리는 그러한 병렬 작업에 대해 뭔가를 얻겠지만, 아마도 우리는 순수한 성능보다는 다른 방향으로 IT를 발전시켜나가는 방향을 택할 것이다.

'병렬처리가 되는 빠른 머신'과 '정말로 작고, 싸고, 전기 조금 먹고, 몇몇 코어의 조합으로 '충분히 빠른' 어떤 것을 골라야 하는 문제가 된다면, 아마도 사람들을 후자를 택할거다.

특히, 일상적으로 사람들이 해결을 원하는 많은 문제들이 병렬 문제가 아니라면 더 그렇다.


염세적이라고? 그건 당신이 보기에 달려있다.