본문 바로가기

프로그래밍

parallel programming

MS가 OOXML을 ISO 표준 standard로 만들어 버릴 뻔한 일이 있는지도 모른채 정신없이 달렸던 몇주였다.

얼마전 intel 에서 공개 세미나를 한 적이 있었는데 두가지 주제에 대한 강연이 있었다. 하나는 프로그래밍 최적화 기법에 관한 내용이었고 다른 하나는 병렬 프로그래밍이다.

프로그래밍 최적화 기법에 대해서는 intel에서 자체 제작한 compiler의 뛰어난 성능을 관람할 수 있었고(-_-;;)

두번째 병렬 프로그래밍에 대한 강연에서는 마치 기독교 목사님의 열렬한 연설과 같은 강사분의 열변을 감상할 수 있었다.

intel 세미나에 갔다 오기를 잘 했다는 생각이 든 것은, 생각만 해두고 있었던 병렬 프로그래밍의 중요성을 좀 더 구체화시킬 수 있었던 것이다.

코어가 많아진다는 것은 쉽게 말해서 인력이 증가한다는 얘기이다. 인형 100개의 눈 부치는 일을 사람 혼자서 하는데 100분이 걸린다고 하면, 100명의 사람으로 1분에 일을 끝마칠 수 있다.

여기서 중요한 건, 인형 눈 부치는 일이 각각 독립적으로 시행 가능하다는 것이다. 일에 대한 dependency가 없다는 말과도 같다.

앞으로 프로그래밍을 할 때 일정한 일양이 있으면 병렬적으로 처리 될 수 있게끔 하는 마인드를 항상 가지고 있어야 한다.

병렬 프로그래밍에 대한 마인드는 대학 교육에도 하루 빨리 파급되어야 할 것이다. 호로비츠의 자료구조의 시대는 지났다. 프로그래밍을 어떻게 하느냐에 따라서 n * log n 이 걸리는 자료구조는 n * log n / 2 의 time complexity를 가질 수도 있고 log n 이 될 수도 있다.

사실 자료구조의 시대가 지났다는 것은 비약이고, 자료구조의 패러다임이 변했다고 하는 것이 좋겠다. anyway, 자 내일부터 숙지하자. -_-