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!

Comments (16)

  1. Jason Haley says:

    Interesting Finds: May 9, 2009

  2. Peter.O says:

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

    P

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

  4. Adam says:

    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 :)

  5. .NET Programmer says:

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

  6. phillips.joshua says:

    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

  7. Trumpeter says:

    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.

  8. Trumpeter says:

    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.

  9. mdude says:

    Any plans to support Axum on gpus?

    How does Axum compare with OpenMP/MPI?

    Thanks.

  10. Josh Phillips says:

    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

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

  12. decatec says:

    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 …

  13. phillips.joshua says:

    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

  14. art_scott@msn.com says:

    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

  15. phillips.joshua says:

    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