.NET Framework용 Parallel Extensions 12월 CTP
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들)가 이를 지원하고 라이브러리가 더욱 주류화될 수 있도록 바뀌어야 하는 것은 하나의 숙명으로 느껴지기 시작한 것입니다.
답글 남기기