Spike, that analysis of cash prize effectiveness seems like a lot of hard work, and I'm fundamentally lazy. I'm also impared with respect to statistics (otherwise I'd have to face the fact that I probably wont live forever after all).
Be all that as it may, I am actually quite interested in doing a distributed computing project. I was thinking a while back about the following ideas:
1- There's lotsa unused CPU time out there, but it needs to be used in
chunks (grouped around physical machines). That is, it will suit concurrent
2- Communication between processes in this concurrent environment is approaching impossible in any practical sense, certainly impractical at this stage.
3- You could get a *lot* of people to jump on board if they could be rewarded in some way. Money, kudos, inner glow, whatever. Depends on your gatekeepers (the particular group of owners of idle machines).
So, what can be done in a highly parallel way, without needed lots of intercommunication between processes? Simulation came to mind immediately. I think this is a growing field in business. People currently build simulations of things like factories, and run them a lot of times using various statistical distributions to generate inputs on each run. A lot of times equates to a few thousand if you're lucky I think.
Seperate runs of an experiment (ie: simulation). No intercommunication. Often each run is relatively small (might run on a PC very comfortably). So a sim could be run orders of magnitude more times in a distibuted computing environment, probably for far lower cost.
What's the cost? I think you should probably pay people for their CPU time. How do you do that? Get a big ISP is a good start, and get them to offer free hours to their customers in return for work done. You pay them money. The person wanting to run a sim pays you money.
So how does this apply to my project? Well, it's an undergraduate software engineering project (I just have to build something non trivial and write nice doco about it). There's no money to pay CPU donors. So if I set up a virtual supercomputer where everyone donates CPU time to run a bogus sim, that's going to be really attractive.
I'm thinking that I might write a game. Something simple (I don't have years
for this project!) where little bots run around bashing each other senseless
sounds good. I'll provide a simple (simple! ha!) language, and people can
write AIs for their bots. Then the bots are thrown together in every
combination, and run against each other many times (how big is many? how
long is a piece of string?). The bots are simulated on peoples machines who
sign up. People who submit bots must also donate CPU time I think. Others
could too if they wanted to.
Results are assembled, finals are run, someone is the grand winner. I've
wanted to write one of these games for ages, and the idea of writing it as a
distributed app tickles me pink! Even better, it's justifiable, because a
game provides incentive for people to submit jobs to run, and for people to
submit CPU cycles.
Results are assembled, finals are run, someone is the grand winner. I've wanted to write one of these games for ages, and the idea of writing it as a distributed app tickles me pink! Even better, it's justifiable, because a game provides incentive for people to submit jobs to run, and for people to submit CPU cycles.
It also lets you develop the first round of tools (or a toolkit) for a more general purpose distibuted virtual machine; this game is nothing but a big sim.
Umm, there's probably more, but let me know what you think of this. Would anyone here be interested in donating CPU time or providing bots for such a beast?
Grade A Geekboy
> From: Spike Jones[SMTP:email@example.com]
> Reply To: firstname.lastname@example.org
> Sent: Tuesday, 24 August 1999 15:16
> To: email@example.com
> Subject: Beowuld schmeowulf...
> Emlyn, regarding your thesis, you might consider studying a phenomenon
> that Greg Stock spoke about at E4, the effect of cash prizes on research,
> such as distributed computing. His thesis, if I understood it correctly,
> that when a prize is offered for a feat, several times the amount of the
> prize is spent by all the participants collectively in the attempt to
> the prize. How many jillions are spent trying to win a Nobel prize of a
> few hundred K? For this reason, cash prizes act as a technological
> force multiplier.
> For your computer science thesis, consider distributed computing.
> The reason this is so study-able is that some distributed projects
> such as GIMPS have available the amount of computer time being
> produced as a function of time. see
> You can see computing accomplished as a function of date and
> results reported as a function of time of day, etc.
> Heres where your research could go:
> 1. Get in touch with Scott Kurowski, the organizer of GIMPS,
> see if he will give you the raw data that is shown in graphical
> form on the site above.
> 2. With that data, do a butterworth filter or similar digital
> filtering technique [fourier transform to frequency domain,
> filter out the yearly component, then inverse transform back
> into time domain, etc].
> 3. Use that data to determine how the introduction of the
> cash prize, announced on 1 April 1999, effected the number
> of participants. Determine if the claim of the first EFF prize
> on 1 June 1999 caused the masses to lose interest and
> give up, or did the publicity cause more to sign on, etc.
> 4. Determine if the *way* in which the EFF prize was
> structured actually contribute to the overall effort, or did it in
> fact, *detract from* the effort by encouraging participants
> to leave the organized search and go off treasure hunting alone.
> This lone wolf behavior creates a situation where the same
> exponents may be checked by several people instead of
> just two, decreasing efficiency of an organized distributed
> computing effort.
> 5. See if you can figure out a good project for distributed
> computing that uses idle CPU cycles. We have a lot of idle
> computers on our list and a lot of open minds. spike