Grid Computing using Microsoft.NET Framework

Grid Computing using Microsoft

Forbes Magazine in its January 2006 issue ran its cover story titled “A Super Computer for your living room”. This discusses the IBM cell processor powered by eight co-processors with their own memory being used in multimedia.  This helps providing realistic imaging by realtime rendering as it states

“Cell crunches through millions of lines of topographical and photographic data per second to paint topographically accurate, photo-quality pictures at a movie quality 30 frames per second. On a similar program a pentum take two minutes to sketch a single frame.” –Forbes, Jan 2006.

Beside the chip’s power whenever it comes to large scale parallel processing, Linux is usually the first name which comes to mind. Even though Microsoft is trying to catch up, it’s seems already a bit late in the OS/hardware game. However, while assisting a friend’s Masters thesis for “Grid computing with XML web services”, I came across several decent Microsoft application frameworks and services augmenting the grid computing. Grid computing is a form of distributed computing infrastructure “that provides the ability to perform higher throughput computing by taking advantage of many networked computers to model a virtual computer architecture that is able to distribute process execution across a parallel infrastructure.” (wikipedia). Microsoft’s early initiatives on Grid are explained in this Jim Gray’s talk and the future eScience workshops have augmented the blitz. This list of services and frameworks comprises of which is a poster child for both eGovernment and for .NET, or, windows clustered version, Web services resource framework (WSRF.NET Webcast: Grid Computing Using .NET), and last but not least, Alchemi.

Alchemi is defined as “an open source software framework that allows you to painlessly aggregate the computing power of networked machines into a virtual supercomputer (computational grid) and to develop applications to run on the grid.”

Distributed Fractal Generator is an interesting example and with a little setup, programming for a grid can be as intuitive and simple as following sample taken from Alchemi’s user guide.

  class MultiplierApplication
        static GApplication ga;

        static void Main(string[] args)
            Console.WriteLine("[enter] to start grid application ...");
            // create grid application
            ga = new GApplication("localhost", 9099);
            // add GridThread module (this executable) as a dependency
            ga.Manifest.Add(new ModuleDependency(typeof(MultiplierThread).Module));
            // create and add 10 threads to the application
            for (int i=0; i<10; i++)
                // create thread
                MultiplierThread thread = new MultiplierThread(i, i+1);
                // set the thread finish callback method
                thread.FinishCallback = new GThreadFinish(ThreadFinished);
                // add thread to application
            // set the application finish callback method
            ga.FinishCallback = new GApplicationFinish(ApplicationFinished);
            // start application

References & Further Reading