Hi Folks, I will be starting my MS in Computer Science come Jan 2004 and am hoping to focus my thesis on desktop grid computing. I would really appreciate it if you could offer some insight into what i'm going to say next.
The simplistic concept of desktop grid computing is to,
1. Break application/job into independent components
2. Send component to idle PC for processing
3. Return processed component to the application server to be combined
As much as i have read, most of the work done in the field of grid computing, conforms to the above listed steps. Also, not every application job can be broken into independent components hence the scope of impact is limited (at this point) to high-level industries such as bio-tech and finance.
I was thinking...why not do it the other way. As an analogy, consider your monitor. How does it get power to work..?...from the power socket. Current flows to the socket because of a potential difference from generator to power socket and your monitor powers up.
Why not idle PCs SENDING their idle CPU power to servers. Benefits of this includes,
1. Applicable to any possible application because the application never leaves its parent server. In this way, every application is a candidate for support by grids.
2. Moves the grid concept beyond high level industries such as biotech, unis and finance to the man on the street. Why..? Well, every company has spare PCs just lying in the store doing nothing..just imagine the Return of Investment (ROI) if we could exploit these "lazy" PCs....the market potential is HUGE
I'm really not sure at this point of time how to get CPU cycles across like current but I was hoping you could offer some advise. Has any research or word of this reached you..? Would you be aware of any individual or organization working on such an implementation..? Have i entirely lost it..? : )
Even though this is almost 18 months too late, maybe it will spark some other discussion about grids and using idle PCs.
Your analogy of shifting processing cycles aselectricity flowing is flawed since processing power must be used at the point of creation. I can't cram any more cycles into a CPU than can be executed by the processor.
The idea of harnessing idle processors has been around for several years. There are many different systems for doing such things, but each involves exporting instructions and data to the external processor for execution. This can be as tightly coupled as creating a virtual cluster of desktop PCs or loosely coupled by sending complete jobs to processors and waiting for a result before sending another task.
One of the big problems with such wide-area distributed computing is the data being moved around. For LAN situations, the data may be located on some shared file server. For cases where you wish to harness processing power in different parts of the country, the problems that require such large-scale computing resources will likely have large-scale (100's of terabytes) data requirements. Thus, a more interesting problem would be how to schedule distributed computations in a network of PCs would be assigning tasks that involve the minimum amount of data movement. That could be a potentially valuable research project.