Distributed problem solving

Started by
4 comments, last by Khaos 20 years, 1 month ago
How do programs like the Prime Search or SETI give random, individual computers a task to do, whilst still keeping everything organized and under control; grouped all together as one for the common goal? Could you provide a *simple* problem like this in some C code of sorts, or a general algorithm? I''d like to know how they can search for an unknown result (Prime Search) but have no PC''s searching for the same thing.. I really don''t understand it. Could someone simply inform me as to how this works, or how to implement it on some basic scale? Thank you all.
Advertisement
*ellipsis*
"Okay gang, the goal is to read every book in the library, looking for the magic phrase hidden inside one of them. Use your library card to check out a book and start reading. We expect you to return the book as soon as possible, so you can read another. If you fail to return a book, we''ll use our magic wand to create a new copy of that title [okay, the analogy is breaking down a bit]. If somebody thinks they have found the magic phrase, give us a call, and we will verify."
algol is right. In both the examples you gave all those programs do is allocate a range of data to each computer (often they allocate different ranges to each computer, but in some cases some redundancy can be an advantage), and the computer then goes through that data looking for a certain pattern. If it finds it it tells the server and the server checks it for itself to make sure. Or something like that.
My stuff.Shameless promotion: FreePop: The GPL god-sim.
Distributed computing is not effective for all methods of problem solving (at least not without some creative problem solving!!)

Where distributed programming offers the best gains is when large sets of data need to have the same functions performed, or at least similar functions.

Consider rendering a 3d movie; calculating the positions of the objects is not terribly time consuming in comparison to the rendering of individual frames. As a result it becomes effective to distribute the process of calculating the position of all objects in a frame, then dispatch that information to a rendering server. Once the frame is dispatched calculations for the next frame begin, and when completed, it is dispatched to the next available server. Another approach is to have the rendering systems query the server for available frame information, then render the frame, and request a new frame as soon as it has completed a frame. Load balancing depends on the application.

Any subject which can be broken apart like this can be easily worked into a distributed system, wether it a rendering farm, calculating potential outcomes of genetic experiments, cracking passwords, or performing calculations to test imitative patterns in evolutionary swarms.
distributed.net is a project much like seti, a 'distributed' computer with clients for just about anything.

I mention it only because they provide teh source to their client which you can download and browse if you'd like...


------------------------------------------------------------
// TODO: Insert clever comment here.

EDIT: missed endquote

[edited by - drowner on March 19, 2004 2:38:43 AM]
------------------------------------------------------------// TODO: Insert clever comment here.

This topic is closed to new replies.

Advertisement