Welcome to MSDN Blogs Sign in | Join | Help

View This Blog In

Building Parallel Applications using Axum

Earlier today, we made available on MSDN DevLabs a .NET language for building parallel applications – Axum.

Axum enables developers to easily build scalable and reliable applications for multi-core and many-core scenarios using the power and convenience of the .NET Framework.  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.  Domains make you more productive by allowing you to worry less about concurrency and focus more on your algorithms and code.

·         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.

·         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.  The compiler will enforce that agents uphold their stated intentions and the runtime will schedule your agents accordingly to maintain safety.

·         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.

You can download Axum from DevLabs, tell us what you think on the project forum, and stay up-to-date via the team blog.

Namaste!

Posted: Friday, May 08, 2009 10:05 PM by Somasegar

Comments

Jason Haley said:

Interesting Finds: May 9, 2009

# May 9, 2009 11:41 AM

Peter.O said:

Great value. Great ventilation of lots of what would otherwise go unnoticed. Thanks, man!

P

# May 9, 2009 7:22 PM

US ISV Developer Evangelism Team said:

Axum enables developers to easily build scalable and reliable applications for multi-core and many-core

# May 11, 2009 12:37 PM

Adam said:

I've been waiting for something like this in .NET.  It will be cool to get a heavy-weight sample up and running on some serious hardware to see what it does :)

# May 12, 2009 3:36 AM

.NET Programmer said:

Is there any other link to know more about parellel applications? When do we build parellel applications?

# May 12, 2009 11:40 AM

phillips.joshua said:

Hi .NET Programmer,

A great resource for parallel programming at Microsoft is http://msdn.com/concurrency.  You can find tons of information there about what we're doing in Visual Studio 2010 and beyond as well as links to other parallel computing resources.  

When do we build parallel applications?

Well, there's no short answer but I would look at the manycore shift white paper (http://www.microsoft.com/downloads/details.aspx?FamilyId=633F9F08-AAD9-46C4-8CAE-B204472838E1&displaylang=en) to understand why parallel computing is important (and necessary) in the first place.  From there, it's not a matter of "when do we build parallel applications," it's a matter of "is it possible to parallelize my application and how do I do it?"

Thanks for the great question!

Josh Phillips

Program Manager

Parallel Computing Platform

Microsoft

# May 12, 2009 2:42 PM

Trumpeter said:

I visit the blog for technical information but I am given marketing material. .NET is not reliable. The framework is not easy to use. It comes with steep learning curve. Please skip advertising and produce technical information. Thank you.

# May 13, 2009 1:48 AM

Trumpeter said:

I visit the blog for technical information but I am given marketing material. .NET is not reliable. The framework is not easy to use. It comes with steep learning curve. Please skip advertising and produce technical information. Thank you.

# May 13, 2009 1:48 AM

mdude said:

Any plans to support Axum on gpus?

How does Axum compare with OpenMP/MPI?

Thanks.

# May 13, 2009 1:32 PM

Josh Phillips said:

Hi Trumpeter, the Axum blog (http://blogs.msdn.com/maestroteam) and Programmer's Guide/Language Specification that are included on the Dev Labs site are full of technical information.  If there is a question you have that isn't answered in those documents, please post a question on our forum.

mdude,

Great question!  No plans yet to support Axum on GPUs but its definitely something we're starting to think about.  

OpenMP is a set of pragma directives for C++ that give the programmer some level of data parallelism (like Parallel For).  This is really an extension of an existing language and model.  Axum is an entirely new managed language that presents an entirely different model to get scalable and safe concurrency: agents.

MPI is a set of APIs that are the de facto standard for communication between nodes in a distributed memory parallel application.  MPI is really about the communication between "agents" while Axum is more about the whole picture, including messaging, isolation, and the agents.  MPI and Axum networks also share some patterns that are useful for message-passing systems, such as joins, broadcast, etc.

Keep up the great questions!

Josh Phillips

Program Manager

Parallel Computing Platform

Microsoft

# May 13, 2009 2:10 PM

Blog de Soma en español said:

Publicación del inglés original , viernes, 8 de mayo de 2008 a las 10:05 PM PST por Somasegar Hoy hemos

# May 13, 2009 2:14 PM

decatec said:

Will Axum be a complete different syntax or will you merge it into the C#/VB.NET languages?

Something like a "parallel mode" for C#/VB.NET would be ideal for the existing large codebases ...

# July 9, 2009 6:48 PM

phillips.joshua said:

Hi decatec,

Axum is an incubation project to help us test out the features and concepts without polluting other established general programming languages.  

It's very much conceivable that any of those concepts could end up in more mainstream languages but we have no plans to do so as of yet.  If you feel strongly that a certain language is lacking a feature in Axum that you find useful or crucial, it's important that you provide that feedback to us in our forum or blog!  

A "parallel mode" that would automatically parallelize existing code bases is just about the "Holy Grail" of parallel computing and it's incredibly difficult and complex.  It's also a very hot topic of research.  

We're taking one step at a time as evidenced with .NET 4 technologies like PLINQ and Parallel.For, which bring you one step closer to automatic parallelization but still require careful handling of shared state.

Thanks for the question!

Josh

# July 9, 2009 7:42 PM

art_scott@msn.com said:

Axum relationship to F#?

It's great to see work being done on the critical challenge of today and the days to come.

Thanks,

Art

# August 16, 2009 11:07 PM

phillips.joshua said:

Hi Art,

Axum currently has no direct relationship to F# though its obvious that some Axum concepts compliment F# and vice versa.  Potentially more important is how Axum can benefit the F# audience. Scalable distributed programming models and productivity gains realized through safety are quite attractive to the verticals where F# has garnered a following.  

I'm glad you asked this question.  We're currently exploring how Axum might look as part of other languages.  

Keep a look out on our blog! http://blogs.msdn.com/maestroteam

Thanks,

Josh

# August 17, 2009 2:46 PM
Leave a Comment

(required) 

(required) 

(optional)

(required) 

  
Enter Code Here: Required

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS


Page view tracker