철수네 소프트웨어 세상 [본점]

소프트웨어와 관련이 있다면 뭐든지 – I no longer work for Microsoft.

.NET Framework용 Parallel Extensions 12월 CTP

leave a comment »

Somasegar’s WebLog : Parallel Extensions to the .NET FX CTP

Joe Duffy’s Weblog – Parallel Extensions CTP is available!

Download details Microsoft Parallel Extensions to .NET Framework 3.5, Dec07 CTP(다운로드)

Parallel Programming with .NET(블로그)

Parallel Computing Developer Center

CPU 파워의 미래가 한 CPU에 여러개의 코어를 넣는(듀얼/쿼드 코어등) 방식을 하나의 큰 가능성으로 가닥을 잡은지 좀 지났지만, 소프트웨어에서 이를 활용하고 있는 %는 그렇게 높지 않습니다. 기존의 프로그래밍 모델들 자체가 태생이 동시에 실행되어 여러개의 코어를 지원할 수 있지 않은 이유로 작지 않은 변화를 필요로 하고 있습니다. 연구는 꽤 오랫동안 계속되어왔지만, 많은 사람들에게 있어서 그 필요성에 비해서 아직은 갈길이 멀다고 판단하는 것 같습니다. 하지만, C++계에서 유명한 Herb Sutter의 The Free Lunch Is Over A Fundamental Turn Toward Concurrency in Software에서 이야기하듯이 객체 지향의 다음 단계라는 동시성(Concurrency)은 분명히 언젠가는 해결해야할 난제임에는 분명합니다.

마이크로소프트에서도 이를 위해 지속적으로 투자를 해왔고, 그 투자 중 하나로 친숙한(?) .NET Framework에 이런 기능 넣어 더 쉽게 이를 접근할 수 있도록 하는 확장(Extension)을 마련하고 첫 CTP를 공개하였습니다. 이름하여 Parallel Extensions. 여기에는 언어 확장과 함께 이에 따라 실시간에 동시성을 제공하는 런타임을 포함합니다.

Parallel Extensions에서는 프로그래머의 동시성 접근을 위해서 3가지 방법을 제공합니다.

  • PLINQ를 사용하여 SQL과 같이 선언적인 방식으로 how가 아닌 what으로 접근하는 방법
  • 기존의 루프(Loop)나 코드 조각을 쪼개어 동시성을 제공하여 활용할 수 있는 방법(Parallel.For 등)
  • 쓰레드(Thread)와 비슷한 작업(Task) 단위로 나누어서 이들이 동시에 실행될 수 있도록 정의하는 방법(Task, Future 클래스)

개념 자체는 크게 어렵지 않고(개념보다는 실용적인 적용이 더 어려울 것입니다) 설치를 할 경우 도움말을 제공하므로 도움말의 팁과 함께 예제들을 실행해보기를 권합니다. 현재 C#과 VB을 지원합니다. 블로그에 지속적으로 이야기했듯이 CTP는 방향성을 보여주고 사용자의 피드백으로 그 방향이 맞는가를 검증하는 릴리스입니다.

(Cross-posted to my msdn blog)

MultiCore/ManyCore의 동시성을 위한 프로그래밍 방법에 관한 연구가 새로운 것은 아닙니다. 일반 소비자들의 PC에는 여러개의 CPU가 달린 Machine은 (가격의 이유로) 거의 사용되지 않았고, 근래 CPU 파워의 발전 속도를 타파하려는 노력으로 Multi-Core 방식으로 한 CPU에 코어를 여러개 넣는 방식이 주류 중 하나가 되면서 이제서야 일반적인 방식으로써 빛을 보기 시작하고 있는 것이라고 할 수 있겠습니다.

기존에 예를 들어 Thread를 사용한 프로그래밍은 일반화된 것이기는 하지만, 이는 일반적으로 라이브러리를 통한 방식이고, (태생은 CPU 시간을 쪼개는 construct였고) 주류 언어들 자체가 이를 Facilitate하는 것은 아닙니다. 한마디로 이 주류화되는 Multi-Core를 활용하는 것은 쉽지 않다는 것입니다. 동시성을 좀 더 활용하기 위해서는 라이브러리를 사용하지 않으면 게임/그래픽 개발자들처럼 어떤 경우 어셈블리를 사용해서 직접 옵티마이징하거나 더 많은 abstraction이 필요하거나 혹은 직접 제작해야 하겠고 게다가 디버깅이라는 녀석 또한 만만치 않습니다. 그래서 기존의 툴과 컴파일러 자체(그리고 그에 준하는 construct들)가 이를 지원하고 라이브러리가 더욱 주류화될 수 있도록 바뀌어야 하는 것은 하나의 숙명으로 느껴지기 시작한 것입니다.

참고: Intel의 Threading Building Blocks(오픈소스 사이트), OpenMP 스펙

Written by charlz

2007년 11월 30일 , 시간: 오후 2:31

Uncategorized에 게시됨

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중

%d 블로거가 이것을 좋아합니다: