A .NET language for parallel applications

May 11, 2009 11:26 GMT  ·  By

The evolution of computing is intimately connected with multi-core and many-core architectures, and Microsoft is little shy about jumping aboard. But not only is the Redmond company embracing the parallel computing wave with its own products, it is also making solutions available designed to enable developers to start building parallel applications. Microsoft Axum is an illustrative example in this regard. Put together in Microsoft’s Parallel Computing Platform, Axum is essentially a .Net Framework language set up to allow developers to tailor their apps to multi-core and many-core scenarios. Axum comes with support for the following operating systems: Windows 2000; Windows 7; Windows Server 2003; Windows Server 2008; Windows Vista; Windows XP.

“Axum makes use of several concepts to enable safe parallel programming: domains isolate state, which helps you avoid implicit dependencies in your code that can result in difficult-to-find concurrency bugs,” revealed S. Somasegar, senior vice president, Developer Division. “Agents are threads of control that process messages asynchronously to stay scalable and responsive. Axum employs a cooperative blocking model that utilizes latencies to do meaningful work; agents that wish to receive a message will block, allowing another agent to execute in its place.”

One important aspect to note is that Axum is considered nothing more than an incubation project. What this means is that the Redmond company is making absolutely no guarantees on Axum evolving into a fully fledged, supported product. Moreover, even if Axum is adopted as a .NET Framework language for parallel applications on an increasingly wider scale, the software giant reserves the right to make changes to aspects such as runtime, features and even syntax at any time, and at any scale.

Somasegar enumerated additional Axum concepts: “Message-passing isn’t always feasible – in certain situations it just implies too much overhead. With Axum, you have the option to declaratively state how an agent intends to use domain state. In Axum, concurrency is the default. All agents execute concurrently unless you explicitly restrict them. This means you spend less time on boiler plate code for multi-threading and more time on your code. Agents can be hosted in a single process, in a separate process, or on a separate machine. This unified programming model means you don’t need to rewrite your code when you want to run it in a distributed scenario.”

Axum is available for download here.