There is an existing MPI scientific application written in C (for linux) that I would like to run on Windows Azure. Is that possible?
-
If possible, how to go about deploying the application?
-
Is it necessary to convert it to Microsoft MPI?
-
Is there a specific kind of Azure service I need to buy for this?
-
Is it necessary to write a managed wrapper to make it work?
Any suggestions/views/references would be very helpful.
P.S I am new to Azure.
So you don’t have to do anything too special to run MPI in Azure. Note thought that Azure nodes (unlike say Amazon’s cluster compute instances) aren’t really set up for this well; you don’t necessarily have a high-speed network, and the nodes aren’t necessarily network-ily near each other. So a tightly-coupled code probably doesn’t work all that well, whereas a lot of people use Amazon or other services successfully for that sort of work.
At any rate, the “Microsoft” MPI that comes with HPC Server is just a re-branded and possibly slightly tweaked MPICH2; so it’s a bog-standard MPI and that should cause no problems. Any MPI program that adheres to the MPI standard should be fine.
As to running a single MPI job, it’s no harder than running an MPI job for the first time on a handful of (say) desktops; you have to make sure that your hostfile is set up correctly, and that MPI is set up to talk to the appropriate IP block. On Technet, they have an example of running the linpack benchmark on Azure nodes (including a link to what it takes to make sure your Azure workers are running HPC server). They skip a couple steps because linpack is a pre-built binary you can download, but compiling with MPI is pretty straightforward.
As to deploying an application so that you can run it routinely (or have others run it), I’ll defer to others about how best to do that.