IT·인터넷/세미나·행사

인텔 DPD Tech to the Future 블로거 미팅

2010. 5. 17. 13:35

지난 5월 12일에 "인텔 DPD Tech to the Future 블로거 미팅"이 있어서 다녀왔습니다. 인텔이 CPU나 하드웨어 제품만 생산하는 것이 아니라 소프트웨어도 함께 개발하고 있다는 것을 미팅 전에도 알고 있었습니다. 그러나 이번 미팅에서 처럼 인텔에서 제공하는 소프트웨어 개발 툴에 대해 인텔 관계자분과 가까이서 얘기를 나누기는 처음입니다.

멀티 코어 시대의 올바른 프로그래밍

미팅의 주인공은 당연 패러렐 스튜디오가 될 줄 알았는데, 주제는 멀티 코어를 제대로 이용하려면 어떻게 프로그래밍을 해야 하나였습니다.

컴퓨터를 구매할 때면 코어가 몇 개인지 따지고, 가격 차이가 나지 않으면 코어 수가 많은 제품을 구매하는 것에 신경을 썼어도, 소프트웨어 프로그래머이면서도 멀티 코어를 활용하여 프로그램을 작성해야 한다는 것에는 별로 신경을 쓰지 않았습니다.

일반 프로그램 vs 멀티 코어를 활용하는 프로그램

그러나 당연한 얘기이겠습니다만, 멀티 코어를 제대로 활용할 수 있다면 단일 코어를 이용하는 프로그램보다는 경우에 따라서 매우 빠르고 효율적인 프로그램이 될 것입니다. 이번 미팅에서 들은 얘기입니다만, 3D 렌더링 프로그램으로 유명한 마야를 멀티 코어를 사용할 수 있도록 수정했더니 렌더링 속도가 7배나 빨라 졌다고 합니다. 7배 이면 매우 큰 차이죠.

앞으로 코어 수는 더욱 늘어날 것입니다. 가격 경쟁력을 높이기 위해서도 코어 수는 더 많아질 것입니다. 앞서 말씀드린 바와 같이 CPU 코어 수에 연연하지 않고 프로그램을 작성해 왔는데, 만일 멀티 코어에 맞추어 프로그램을 작성해야 한다면 CPU를 직접 생산하는 인텔에서 방법을 제시하는 것이 자연스러운 일일 것입니다. 그래서 인텔에서 소프트웨어도 함께 개발하는 것이겠지요.

그러나 멀티 코어를 적용하기 위한 프로그래밍은 만만한 것이 아니었습니다. 지금까지 단일 코어 프로그래밍만 해 왔다고 멀티 코어 프로그램에서 주의해야 하고 조심해야 하는 내용을 모르는 바는 아니지만, 하나의 루틴이 동시에 분리되어 실행이 된다고 한다면 변수 관리부터 매우 조심해야 하겠습니다.

그렇다고 한다면 이미 진행 중인 프로그램에 대해서는 멀티 코어를 적용하기 위해 프로그램 소스 코드를 수정해야 하는 부담이 있겠습니다만, 다행히 인텔의 패러렐 스튜디오를 이용하면 기존 소스에 조건 컴파일러를 추가하는 것만으로도 멀티 코어를 사용할 수 있게 해주어 작업자의 부담을 많이 줄여 줄 것으로 생각됩니다. 물론 더 많은 방법이 있을지 모르겠습니다만.

앞으로 멀티 코어를 적용했느냐 또는 하지 않았느냐에 따라서, 같은 프로그램이라도 어떤 프로그램은 코어 수가 많아지면 많아질 수록 빠르고 효율이 높아지지만, 다른 어떤 프로그램은 코어 수가 늘더라도 별반 성능 향상을 볼 수 없는 그런 차이가 생길 것입니다. 미팅 중에도 멀티 코어를 적용하지 않은 프로그램과 멀티 코어를 적용한 프로그램을 실행했을 때의 차이를 보여 주었는데, 확실히 빠른 모습을 보여 주었습니다.

개발자 입장에서 생각하는 아쉬운 점

그러나 아쉬운 점도 있었습니다. 우선 독립 개발환경을 제공하지 않는다는 것이 가장 아쉬운 부분이었습니다. 패러렐 스튜디오는 통합 개발환경을 제공하는 대신에 Microsoft Visual Studio에 플러그인 방식으로 설치되어 실행하기 때문에, 컴파일 과정과는 별도로 멀티 코어 적용에 문제가 없는지 따로 검사를 해야 합니다.

그런데 확인하는 과정이 컴파일처럼 소스 코드를 분석하는 것이 아니라 실행하는 과정에서 찾아냅니다. 그렇다고 한다면 프로그램에서 멀티 코어가 적용된 모든 루틴을 실행해서 확인해야 한다는 것인데, 시간이 짧은 루틴이면 모를까 짧지 않다면 때로 큰 부담이 될 수 있을 것입니다.

어쩌면 이 방법이 가장 확실한 방법일지 모르겠습니다. 멀티 코어를 적용한 부분만 따로 떼어 내어 확인하는 방법으로 시간적인 부담을 덜어 낼 수도 있겠습니다. 그러나 개발 생산성이 떨어지지 않을까 염려됩니다. 그러므로 멀티 코어 적용을 좀 더 쉽게 하기 위한 방법까지 제공해 주었으면 하는 생각이 듭니다. 그렇게 하기 위해서는 Visual Studio의 플러그인 방식으로는 부족하지 않을까 생각됩니다.

멀티 코어 수가 많아질수록 강력해 지는 프로그램

개발자 입장이다 보니 멀티 코어를 활용하는 것이 좋은 줄은 알면서, 벌써 어떻게 하면 편하게 일하면서 농땡이 부릴지 부터 생각하는 것 같습니다. 그러나 멀티 코어가 흔해진 요즘, 멀티 코어를 활용하는 프로그램 코딩은 필요할 것으로 생각됩니다. CPU의 코어 수가 증가할수록 강력해지는 프로그램, 마다할 이유가 없겠지요. 그래서 앞으로는 소프트웨어의 사양에 "멀티 코어 지원" 이라는 항목이 추가된 제품이 많아지지 않을까 생각해 봅니다.