Share via


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

  • Anonymous
    May 08, 2009
    PingBack from http://asp-net-hosting.simplynetdev.com/building-parallel-applications-using-axum/

  • Anonymous
    May 09, 2009
    Interesting Finds: May 9, 2009

  • Anonymous
    May 09, 2009
    Great value. Great ventilation of lots of what would otherwise go unnoticed. Thanks, man! P

  • Anonymous
    May 11, 2009
    Axum enables developers to easily build scalable and reliable applications for multi-core and many-core

  • Anonymous
    May 11, 2009
    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 :)

  • Anonymous
    May 12, 2009
    Is there any other link to know more about parellel applications? When do we build parellel applications?

  • Anonymous
    May 12, 2009
    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

  • Anonymous
    May 12, 2009
    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.

  • Anonymous
    May 12, 2009
    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.

  • Anonymous
    May 13, 2009
    Any plans to support Axum on gpus? How does Axum compare with OpenMP/MPI? Thanks.

  • Anonymous
    May 13, 2009
    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

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

  • Anonymous
    July 09, 2009
    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 ...

  • Anonymous
    July 09, 2009
    The comment has been removed

  • Anonymous
    August 16, 2009
    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

  • Anonymous
    August 17, 2009
    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