Crowdsourcing Bruteforcing: Help me win the EngineYard challenge
rustyengines.silentmac.com
rustyengines.silentmac.com
I think it is safe to conclude that browser-based crowdsourcing is not a compelling approach to numerical computation.
For comparison, this guy's distributed JS implementation just reached 1B a few hours ago: http://twitter.com/wondersquirrel/status/2750527789
If Engine Yard was trying to promote their cloud services with this contest it's rather ironic it appears it will probably be won be a few desktop computers with high end GPUs, which cloud hosts usually don't even have.
CUDA is pretty neat :)
Contests are usually held to fire up peoples creativity and this idea to solve it via the browser as an ad-hoc cluster is really pretty creative.
Personally I think to try to solve this contest by brute forcing it is changing it in to a simple pissing contest between the various hardware / software combination, I'm sure some guy with an fpga kit will do a lot better than the CUDA competitors.
It would be nicer if someone discovered a previously undetected flaw and solved the contest through a backdoor. that would be hacker news :)
"Yeah, my 5 GPUs are currently cranking at a total rate of 800 M/sec. (Best score of 39 after running for a few minutes.)
(Hah! Just got lucky and hit 35 on one card after an hour.) " - The nVidia CUDA group
Good luck.
(I also generated a few hundred thousand hashes for you)
Edit: it's back up to 43, a nice improvement from 48 from a few minutes ago.
I added a word checker, so no more of this tomfoolery!
As far as I can tell, the browsers only contact him if they find a string with a shorter hamming distance, otherwise it's entirely offline, including picking random words.
I upvoted you :).
"Oh but for your trouble I generated a few hundred thousand hashes for you. --Phil Freo"
Thanks Phil :-) Your message's hash had a hamming distance of 73
#include <stdio.h>
char dist[256];
hamm_init()
{
int i,j,n;
for (i=0;i<256;i++) {
j = i;
n = 0;
while (j) {
if (j & 1) {
n++;
}
j >>= 1;
}
dist[i] = n;
}
}
int hamming_distance(char * hash1,char * hash2) {
//calculate the distance between two hashes
int d = 0;
while (*hash1) {
if (*hash2 == 0) {
break;
}
d += dist[*hash1++ ^ *hash2++];
}
return d;
}
main()
{
hamm_init();
printf("0 %d\n",hamming_distance("abcd","abcd"));
printf("1 %d\n",hamming_distance("accd","abcd"));
}Edit: fixed and fixed
Unless you're using characters > 255, UTF-8 is identical to ASCII.
http://en.wikipedia.org/wiki/UTF-8
Hm, on second thought UTF8(ASCII) is -always- == ASCII, since ASCII is only defined for 0-127, unless you count the extended variants :P
You might also consider lookup tables for Hamming distance (google for "counting bits").
On the other hand, a quick Haskell implementation using Data.Digest.Pure.SHA is doing about 6,000 hashes per second (might have been 8000, I forget now) per core on an Intel(R) Core(TM)2 Duo CPU E6750 @ 2.66GHz
So you're looking at 1000 people to equal one core of a decent desktop. It's certainly an interesting approach, and has a lot of potential. I'm just not sure the marketing is there with the "help us win" motivation.
good luck!
Terrific idea and implementation. I have 10 tabs on Chrome. Good luck.
As far as I can tell, the browsers only contact him if they find a string with a shorter hamming distance, otherwise it's entirely offline, including picking random words.
OS X: Safari, Firefox 3.5, Webkit Nightly, Chromium Nightly, Opera 10 beta 2, Shiira, Camino 2, Seamonkey, Sunrise, Flock
Then I have 3 virtual machines open...
Windows XP #1: Firefox 3.5, Chrome, Internet Explorer 6 (Dev testing bed, not upgrading, but take it anyway), Opera 9, Maxthon 2 (Surprised I even had it)
Windows XP #2: Firefox 3.5, Chrome, Internet Explorer 7, Opera 9, Maxthon 2
Windows XP #3: Firefox 3.5, Chrome, Internet Explorer 8, Opera 9, Maxthon
I'd donate an Ubuntu VM or two, but... they don't wanna start up at this point. shrug
This may not help, I dunno, but I'm certainly not using the computer. Have a blast, and good luck!
I wouldn't leave it running if you killed my processor.
But you made it painless, so you get at least a few hours of runtime on me @ 1ms.
(I second, or third, the browser-war idea.)
http://twitter.com/rikfaith/statuses/2743945177
I have no way to check. True or not?
Now, I opened it also in Safari and says: The smallest Hamming distance we've achieved so far is: 0
0? Does that mean you got one?
Edit: Ok. Solved.