Originally posted by: OhioDude
Ok, Infidel -- 😉
I gather this thing only works on XP. Tried to run it on a Win2K box and a couple of Win2K3 boxes and it barfed with an unhandled exception on each. Too bad. I could have added about 10 workstations for you.
As it is, I've got it running on an XP2500 and a 3.0GHz P4. Plays nice with S@H, too.
🙂
Not sure why I did this, but never mind
http://www.7internet.co.uk/public/ctc_contest/CTC_Contest_Bin.rar
Just unzip and run
http://www.7internet.co.uk/public/ctc_contest/CTC_Contest_Source.rar
Naturally don't trust, look at the source and/or compile your self.
I cleared out loads of sh*t in the source (left commented if you want to look), rewrote a few things, made it threaded instead of 1 crappy timer, got rid of the 3D thing, made it more OO than "GUI runs all". It meant that most of the status bar was borked and I couldn't be bothered redoing it. But I put the Total Done back in and made that ASync.
Anyway. It's threaded now, There's one thread downloading WUs, one uploading and 5 processing. Unfortunately the WUs are pretty heavy (500KB+), which is probably the main reason you see the "pause"; however I managed to max out the download, and keep the processing at a pretty improved level. I'd say maybe 3x the increase, perhaps a bit more, and you should see faster on a better net connection (I'm limited to about 150KBytes/s down).
Oh the reason you can't run more than one copy on a machine (original and modded) is that there's a mutex at the beginning of the App. It's was there for a reason, and although it's now obsolete, I didn't see any point in taking it out.
I had this semi good idea to make a proxy webservice that sits on a fast host relaying WU requests. But in this case the client->proxy stage would compress the WUs. This seems to work quite well, it will generally max out your CPU, but the best thing is that is doesn't max out the net connection as the compression is about 8:1 🙂
However this version is not for everybody, there's no change apart from the proxy and if you're on a very fast connection then I doubt you'll see much increase. But worse than that, the server is only on 100MBit connection, so at 500KB per WU I can see it getting starved very quickly.
http://www.7internet.co.uk/public/ctc_contest/CTC_Contest__CV_Bin.rar
Source
http://www.7internet.co.uk/public/ctc_contest/CTC_Contest_CV_Source.rar
The proxy only has one method which is below, so no point posting that.
Code:[WebMethod] public bool GetNextWorkUnit(ref byte[] pdbFile1, ref byte[] pdbFile2, ref string pdbFile1Name, ref string pdbFile2Name, ref string pdbId1, ref string pdbId2, ref string pdb1ChainId, ref string pdb2ChainId, long maxFileLen) { CEService service = new CEService("[url="http://ctcdn.tc.cornell.edu/BioContest/CEWebService.asmx"]http://ctcdn.tc.cornell.edu/BioContest/CEWebService.asmx[/url]"); bool retVal = service.GetNextWorkUnit(ref pdbFile1, ref pdbFile2, ref pdbFile1Name, ref pdbFile2Name, ref pdbId1, ref pdbId2, ref pdb1ChainId, ref pdb2ChainId, maxFileLen); MemoryStream stream; GZipOutputStream cstream; if (pdbFile1 != null) { stream = new MemoryStream(); cstream = new GZipOutputStream(stream); cstream.Write(pdbFile1, 0, pdbFile1.Length); cstream.Finish(); pdbFile1 = stream.ToArray(); cstream.Close(); } if (pdbFile2 != null) { stream = new MemoryStream(); cstream = new GZipOutputStream(stream); cstream.Write(pdbFile2, 0, pdbFile2.Length); cstream.Finish(); pdbFile2 = stream.ToArray(); cstream.Close(); } return retVal; }
Reverse engineering, hence why all the local variables were named flag1 and text1 etc. I don't even know whether the original was written in C# or not. From all the global variables I would guess that it came from a VB coders hands.