Folding@home with the SMP Client in Windows Azure

Want to run @home with Azure for another team or use a more powerful CPU?

For the true geeks out there, running the Folding@home client involves tweaking, high performance computing, and knowing the difference between the GPU and CPU clients.  We heard from a couple of folks about maximizing their Windows Azure usage, and Jim made some changes to the client piece to accommodate.  In truth, we did a little of this last time we ran @home, but we didn’t draw much attention to it for fear it would just add confusion – so, this info is presented as optional and not necessary to do @home.

First, when setting up the 90 day trial, accounts have a $0 spending limit – which means, unless you intentionally disable the cap, you will never be charged a dime.  This also means your account will be shut down when you reach your monthly usage quota.   The 90 day trial allows 750 compute hours per month, which is 1 small instance 24x7.   If you’d like, you can run either 8 single-core instances, or a single 8-core instance, however you’ll burn 192 hours per day and exhaust the limit in about 4 days.  You could also run a dual core instance for half a month.

imageHowever, Visual Studio Ultimate MSDN subscribers receive 1,500 hours/month, so you can run either 2 instances of @home, or more preferably, a single dual core – or a quad core for half a month.  It’s better for @home, and here’s why:

Folding@home rewards speed over quantity.  The faster a work unit is completed, the more points are awarded.  Consequently, you and your team (by default, the Windows Azure team) does better!   To do this, you first need a passkey.  A passkey acts as a unique identifier for a user and is required to get these bonus points.  

In the project properties, you can add the passkey, and specify the team number.  184157 is the Windows Azure team, but we allow you to change this if you’re already on another team:

image

imageNext, if you have downloaded the bits already, you might need to re-download them.  To know for sure, check if you have both clients in the client folder of the AtHomeWebRole project, as pictured up above.  Specifically, you want to see the FAH6.34-win32-SMP.exe.   If you don’t have both executables as shown in the green box above, re-download the solution from the get started page.

Within the project properties, you can now configure the app to use whichever VM size is most appropriate for you.  The larger VM will run faster and accumulate more points, but will get shut down quicker.  If you aren’t on a trial or don’t have the spending cap in place, monitor your usage carefully and be sure you’re staying within the plan limits or be willing to pay for the usage!

That’s all there is to it!  Make sure your storage account is configured per the instructions – if you had a deployment already, the new code will start and run automatically as it will pick up the settings from the storage account.

So what kind of results can you predict?   My main user, which is primarily using Azure, but also some Folding using my home 4-core i5 box has the following numbers:

image

Looking at these stats, I’m pulling in an average of 146 points per WU (and 146 points per CPU).  This is actually a tiny bit better than it should be, because my home machine folds at a much higher rate and contributes to this account.  I then deployed some 8-core and a few 4-core instances with a different account and different pass-key:

image

This account is pulling almost 4,000 points per WU!  If we assume they were all 8-core boxes (which they weren’t, so these numbers are unfavorable) then dividing that by 8 is 474 points per CPU per WU.   The bottom line:  CPUs working together pull significantly more points than CPUs working alone.

See?  I told you this was geeky stuff.  In either event, the Folding@home project is a fantastic project to contribute to, and hopefully, a fun way to learn Windows Azure in the process.  Finally, if you’re not using Windows Vista, 7, or Server 2008, or otherwise just want to download the package files directly, you can do that by reading the instructions here!