HOW-TO: make your own optimized Windows Seti@Home client!

Message boards : Number crunching : HOW-TO: make your own optimized Windows Seti@Home client!
Message board moderation

To post messages, you must log in.

Previous · 1 · 2 · 3 · 4 · 5 · Next

AuthorMessage
Profile doublechaz

Send message
Joined: 17 Nov 00
Posts: 90
Credit: 76,455,865
RAC: 735
United States
Message 354770 - Posted: 3 Jul 2006, 2:05:55 UTC
Last modified: 3 Jul 2006, 2:26:24 UTC

I've just been trying out the sse app, but I have a problem. I always run boinc as an unpriviledged user, and the seti worker terminates immediately when run this way. Seems that the UPX stuff can not handle operating in this way. I'll be working on getting things going after removing the compression. More info soon.
ID: 354770 · Report as offensive
Profile KWSN - Chicken of Angnor
Volunteer developer
Volunteer tester
Avatar

Send message
Joined: 9 Jul 99
Posts: 1199
Credit: 6,615,780
RAC: 0
Austria
Message 356075 - Posted: 4 Jul 2006, 4:44:04 UTC
Last modified: 4 Jul 2006, 4:44:35 UTC

I've heard some reports of this happening. Seems UPX really has some issues, but it' to be a problem only on some distributions. Anyway, that's all Linux-related though.

In Windows matters, Intel seems to be enjoying July 4th off (my licenses have not arrived yet), so I guess it'll be another day before there's even a chance of a public release.

I'll keep you posted.

Regards,
Simon.
Donate to SETI@Home via PayPal!

Optimized SETI@Home apps + Information
ID: 356075 · Report as offensive
Profile IrishFBall32
Volunteer tester
Avatar

Send message
Joined: 28 May 04
Posts: 11
Credit: 16,993,631
RAC: 0
United States
Message 356516 - Posted: 4 Jul 2006, 13:08:48 UTC
Last modified: 4 Jul 2006, 13:10:04 UTC

Yay! finally got a clean build... I see what you mean about manually unpacking .cabs now :) Even after I put those headers and libraries into the proper places it still took me forever to get the linker to find it...

Just to figure out what I was doing I basically stuck to the instructions and built an SSE2 app w/o graphics - Here are the results for my HP dv5130us laptop (Turion ML-37 processor, 1GB RAM). The number on the right is the time in seconds since midnight.

New run with default-515 started..
01:33:16 = 5596
02:02:16 = 7336
------------
29 Minutes

New run with setiathome_5.15_windows_intelx86.exe started..
01:18:45 = 4680
01:33:16 = 5596
------------
~15.26 Minutes

Whoa, almost 2x speed increase!!!

Will test with SSE3 later, but I'm quite happy with the results from this one, and I can use SSE2 on at least 2 if not all 3 of my computers... this laptop is the only one I own that supports SSE3
ID: 356516 · Report as offensive
Profile KWSN - Chicken of Angnor
Volunteer developer
Volunteer tester
Avatar

Send message
Joined: 9 Jul 99
Posts: 1199
Credit: 6,615,780
RAC: 0
Austria
Message 356682 - Posted: 4 Jul 2006, 15:08:35 UTC

Glad you got it to work!
Nice speed increase. I'm still waiting for my Intel licenses..

I'd be interested if SSE3 gives you any sort of difference, because it didn't for me, no matter what platform.

Regards,
Simon.
Donate to SETI@Home via PayPal!

Optimized SETI@Home apps + Information
ID: 356682 · Report as offensive
TheGreatCornholio

Send message
Joined: 29 Jul 99
Posts: 1
Credit: 8,110,016
RAC: 0
Germany
Message 357282 - Posted: 4 Jul 2006, 22:34:14 UTC - in response to Message 356682.  

Hi folks,

I think I found a little bug in the sourcecode. If you look at the procedure seti_analyze (in 'analyzeFunc.cpp'), after freeing allocated memory (e.g. ChirpFftPairs) the procedure 'checkpoint()' is called at the very end. Within checkpoint() some of the arrays just freed are referenced. In the worst case this could cost you a completely calculated and correct work unit, as you get aa "Access Violation (0xc0000005)" in stderr.txt. (This does not happen very often, but it can happen).

I just stumbled over this error, as one of my WU's got stuck at 100%, time still counting. After stopping and restarting, it started all over from 0%. (Look here).

I changed the order in seti_analyze, so that checkpoint is called before freeing stuff at the end.

Greetings,
Michael
ID: 357282 · Report as offensive
Profile Sir Ulli
Volunteer tester
Avatar

Send message
Joined: 21 Oct 99
Posts: 2246
Credit: 6,136,250
RAC: 0
Germany
Message 357286 - Posted: 4 Jul 2006, 22:38:39 UTC - in response to Message 356682.  
Last modified: 4 Jul 2006, 22:40:11 UTC

Glad you got it to work!
Nice speed increase. I'm still waiting for my Intel licenses..

I'd be interested if SSE3 gives you any sort of difference, because it didn't for me, no matter what platform.

Regards,
Simon.


I and my Team and a lot of people are waiting too...

btw Good Woork @KWSN - Chicken of Angnor

Greetings from Germany NRW
Ulli

ID: 357286 · Report as offensive
Profile KWSN - Chicken of Angnor
Volunteer developer
Volunteer tester
Avatar

Send message
Joined: 9 Jul 99
Posts: 1199
Credit: 6,615,780
RAC: 0
Austria
Message 357295 - Posted: 4 Jul 2006, 22:46:00 UTC - in response to Message 357282.  
Last modified: 4 Jul 2006, 22:47:15 UTC

Hi folks,

I think I found a little bug in the sourcecode. If you look at the procedure seti_analyze (in 'analyzeFunc.cpp'), after freeing allocated memory (e.g. ChirpFftPairs) the procedure 'checkpoint()' is called at the very end. Within checkpoint() some of the arrays just freed are referenced. In the worst case this could cost you a completely calculated and correct work unit, as you get aa "Access Violation (0xc0000005)" in stderr.txt. (This does not happen very often, but it can happen).

I just stumbled over this error, as one of my WU's got stuck at 100%, time still counting. After stopping and restarting, it started all over from 0%. (Look here).

I changed the order in seti_analyze, so that checkpoint is called before freeing stuff at the end.

Greetings,
Michael

Good catch! Hasn't happened to me yet - that's not to say it won't or can't :o) Since I can't really code C/C++, such things escape me. I'll change it in my sources, recompile and see what's what.

Ulli, I'm checking my email every 5 minutes...so yeah, I'm waiting too :o) 4th of July is a holiday in the United States, and most businesses probably let their employees take Monday and Tuesday off.

Regards,
Simon.
Donate to SETI@Home via PayPal!

Optimized SETI@Home apps + Information
ID: 357295 · Report as offensive
Profile Sir Ulli
Volunteer tester
Avatar

Send message
Joined: 21 Oct 99
Posts: 2246
Credit: 6,136,250
RAC: 0
Germany
Message 357307 - Posted: 4 Jul 2006, 22:54:14 UTC - in response to Message 357295.  

[quote]Hi folks,

I think I found a little bug in the sourcecode. If you look at the procedure seti_analyze (in 'analyzeFunc.cpp'), after freeing allocated memory (e.g. ChirpFftPairs) the procedure 'checkpoint()' is called at the very end. Within checkpoint() some of the arrays just freed are referenced. In the worst case this could cost you a completely calculated and correct work unit, as you get aa "Access Violation (0xc0000005)" in stderr.txt. (This does not happen very often, but it can happen).

I just stumbled over this error, as one of my WU's got stuck at 100%, time still counting. After stopping and restarting, it started all over from 0%. (Look here).

I changed the order in seti_analyze, so that checkpoint is called before freeing stuff at the end.

Greetings,
Michael


Fingers crossed that all goes well

and Greetings to my Friend Arnold

hope all is going well to my Friend Arnold

Greetings from Germany NRW
Ulli


ID: 357307 · Report as offensive
Profile Geek@Play
Volunteer tester
Avatar

Send message
Joined: 31 Jul 01
Posts: 2467
Credit: 86,146,931
RAC: 0
United States
Message 357311 - Posted: 4 Jul 2006, 23:00:33 UTC - in response to Message 357282.  
Last modified: 4 Jul 2006, 23:01:05 UTC

Hi folks,

I think I found a little bug in the sourcecode. If you look at the procedure seti_analyze (in 'analyzeFunc.cpp'), after freeing allocated memory (e.g. ChirpFftPairs) the procedure 'checkpoint()' is called at the very end. Within checkpoint() some of the arrays just freed are referenced. In the worst case this could cost you a completely calculated and correct work unit, as you get aa "Access Violation (0xc0000005)" in stderr.txt. (This does not happen very often, but it can happen).

I just stumbled over this error, as one of my WU's got stuck at 100%, time still counting. After stopping and restarting, it started all over from 0%. (Look here).

I changed the order in seti_analyze, so that checkpoint is called before freeing stuff at the end.

Greetings,
Michael


You should report this to the developers also. Eric Korpela for sure.



Boinc....Boinc....Boinc....Boinc....
ID: 357311 · Report as offensive
_heinz
Volunteer tester

Send message
Joined: 25 Feb 05
Posts: 744
Credit: 5,539,270
RAC: 0
France
Message 357712 - Posted: 5 Jul 2006, 8:50:52 UTC

the same error I had have too.
you can implicite that ---> if the wu shows 100% stop the client, when you now start the client the WU starts from the beginning again
seti_britta
ID: 357712 · Report as offensive
Profile IrishFBall32
Volunteer tester
Avatar

Send message
Joined: 28 May 04
Posts: 11
Credit: 16,993,631
RAC: 0
United States
Message 357836 - Posted: 5 Jul 2006, 12:15:32 UTC
Last modified: 5 Jul 2006, 12:16:50 UTC

...New numbers are in... here we go!

Clickable thumb of stats in spreadsheet:

The L/D column indicates whether that WU was crunched by my laptop or desktop.

And id my numbers are to be believed, I show an *AVERAGE* performance increase of 266% !!!!

PS - The time reported back to the project is the actual amount of time spent, as opposed to the amount of credit which is multiplied... correct?
ID: 357836 · Report as offensive
Profile KWSN - Chicken of Angnor
Volunteer developer
Volunteer tester
Avatar

Send message
Joined: 9 Jul 99
Posts: 1199
Credit: 6,615,780
RAC: 0
Austria
Message 357971 - Posted: 5 Jul 2006, 14:53:47 UTC
Last modified: 5 Jul 2006, 15:10:36 UTC

Nice numbers! You can't calculate average speedup that way though, that's grossly overinflating it.

Take note that some of the WUs crunched there were noisy ones that get very little credit. Those take ~40-60 seconds using the default cruncher and ~4-6 using an optimized one. So that really inflates your percentages but is not a real-world gain (sure, the percentage looks nice, but it's really just 40 seconds...).

That's not to say the speedup isn't pretty dang impressive :o) Keep up the good work.

In other news, I have finally found out how to build a working 64-Bit Windows executable. Thanks Gecko_R7 for those archives! I will try and compile a selection of helpful stuff from them.

Here's the link that explains how. No wonder my builds kept telling my they could not use AMD64, I was missing the SDK and the updated environment variables.

May even take a hint from Harold Naparst and try to see what combinations of ACML (AMD library package) and IPP yield.

So - seems to bode well for the Windows versions. There are some optimizations that only work on 64-Bit and should provide a little extra speed.

Regards,
Simon.
Donate to SETI@Home via PayPal!

Optimized SETI@Home apps + Information
ID: 357971 · Report as offensive
Profile IrishFBall32
Volunteer tester
Avatar

Send message
Joined: 28 May 04
Posts: 11
Credit: 16,993,631
RAC: 0
United States
Message 358658 - Posted: 6 Jul 2006, 12:44:06 UTC - in response to Message 357971.  

Nice numbers! You can't calculate average speedup that way though, that's grossly overinflating it.


Bah! Buzzkill! Okay, I agree... when I added some more WUs and removed the noisy ones from the stats I get about an 87% overall increase over the average user... on some WUs my app is actually slower than the other users, but never by more than 15% or so, and the whole quorum isn't in yet, so its entirely possible that I am comparing myself to other optimized users as well... (Sidenote: Just for kicks I broke out the stats figure for my laptop and desktop seperately - my Turion64 ML-37 laptop on 32bit Windows gets a 90% increase, where my Sempron64 2800+ running XPx64 gets 86.5%...)

In regards to SSE3 - for some reason I can't make it work... Everything builds okay, but when I throw the app into the benchmark/verify tool it terminates in a second or two if not immediately... no errors that I could find either...

I also see why a lot of people say that SSE3 has no real speed increase for them - Reading your link to the article on IPP/ACML integration shows that most functions in IPP don't yet have SSE3 code, and therefore revert to SSE2. Although I am very intrigued by the idea of overlapping ACML with IPP (as well as the 64bit code) - my two fastest boxes are AMD's (Turion64 and Sempron64), both of which have 64bit OSes installed (only the Sempron runs it regularly) so the added speed bonus of using the non-sabotaged library whenever possible would be very welcome - I look forward to seeing more info on these combinations in the future! (Perhaps I should pay my pal to bring you a few clams... I seem to be enjoying your work quite a bit and still pushing for more :P )


ID: 358658 · Report as offensive
Profile KWSN - Chicken of Angnor
Volunteer developer
Volunteer tester
Avatar

Send message
Joined: 9 Jul 99
Posts: 1199
Credit: 6,615,780
RAC: 0
Austria
Message 358681 - Posted: 6 Jul 2006, 13:08:21 UTC

Lol :o) sorry to be a buzzkiller...

Yeah, it intrigued me to read about Harold Naparst's ventures and methods (which is where the mixed FFTW/ACML/IPP libs came from as an idea). Gecko_R7 was nice enough to make a PDF collection available to me with archives of a lot of old threads concerning optimization. Thanks again, Gecko! Very useful info there.

SSE3 seems to be a problem - the compiler switch /QxP on Windows or -xP on Linux is specifically only made for Intel chips. It does check whether your CPU is AMD (same as /QxN & /QxB or -xN & -xB). However, xW and xK work just fine on AMD chips - if you just want generic SSE3, you will have to remove /QxP and just define USE_SSE3 in the preprocessor flags. No idea whether SSE3 help in any regard - it does on some more recent Intel chips (P-D for example), but only makes a very small difference.

A 2x increase is what I have seen with most chips, be they AMD or Intel. (I.e. a speedup of ~100% +-15% depening on platform). YMMV.

Regards,
Simon.
Donate to SETI@Home via PayPal!

Optimized SETI@Home apps + Information
ID: 358681 · Report as offensive
Eric Korpela Project Donor
Volunteer moderator
Project administrator
Project developer
Project scientist
Avatar

Send message
Joined: 3 Apr 99
Posts: 1382
Credit: 54,506,847
RAC: 60
United States
Message 358828 - Posted: 6 Jul 2006, 15:54:43 UTC - in response to Message 357311.  

Hi folks,

I think I found a little bug in the sourcecode. If you look at the procedure seti_analyze (in 'analyzeFunc.cpp'), after freeing allocated memory (e.g. ChirpFftPairs) the procedure 'checkpoint()' is called at the very end. Within checkpoint() some of the arrays just freed are referenced. In the worst case this could cost you a completely calculated and correct work unit, as you get aa "Access Violation (0xc0000005)" in stderr.txt. (This does not happen very often, but it can happen).


You should report this to the developers also. Eric Korpela for sure.



Consider it reported. Fix will be checked in today. Thanks,

Eric
@SETIEric@qoto.org (Mastodon)

ID: 358828 · Report as offensive
Profile KWSN - Chicken of Angnor
Volunteer developer
Volunteer tester
Avatar

Send message
Joined: 9 Jul 99
Posts: 1199
Credit: 6,615,780
RAC: 0
Austria
Message 358838 - Posted: 6 Jul 2006, 16:16:06 UTC

Thanks Eric!

I'll update my CVS sources and incorporate those changes into my clients (that specific change should carry over to 5.15, AFAICS, right?).

Regards,
Simon.
Donate to SETI@Home via PayPal!

Optimized SETI@Home apps + Information
ID: 358838 · Report as offensive
Profile BORG
Volunteer tester
Avatar

Send message
Joined: 3 Aug 99
Posts: 305
Credit: 6,157,052
RAC: 0
Canada
Message 358924 - Posted: 6 Jul 2006, 18:02:39 UTC

I'm going mad trying to compile anything. I've followed the instructions and keep getting error message after error message.

Anyone know what this means?

seti_boinc Command line error D2016 : '/GL' and '/YX..\\StdAfx.h' command-line options are incompatible


Thanks in Advance :-)
ID: 358924 · Report as offensive
Pepperammi

Send message
Joined: 3 Apr 99
Posts: 200
Credit: 737,775
RAC: 0
United Kingdom
Message 358926 - Posted: 6 Jul 2006, 18:07:12 UTC - in response to Message 358924.  

I'm going mad trying to compile anything. I've followed the instructions and keep getting error message after error message.

Anyone know what this means?

seti_boinc Command line error D2016 : '/GL' and '/YX..\\StdAfx.h' command-line options are incompatible

Thanks in Advance :-)


Linux or Windows? Might be nessicary info for those who can help you.
ID: 358926 · Report as offensive
Profile IrishFBall32
Volunteer tester
Avatar

Send message
Joined: 28 May 04
Posts: 11
Credit: 16,993,631
RAC: 0
United States
Message 358928 - Posted: 6 Jul 2006, 18:08:23 UTC - in response to Message 358681.  
Last modified: 6 Jul 2006, 18:25:14 UTC

It does check whether your CPU is AMD

I should have thought of that... Damn Intel and their proprietary crap... They could have at least returned a message of some kind to the command line...

Talking to a couple people about this, someone mentioned that there are add-in PCI cards that serve as hardware FFT co-processors... I havn't had a chance to research them yet, but if theyre reasonably priced and a library could be written to interface with it (think replacement to IPP calls) I imagine that could *really* kick the SETI app into overdrive... I'll research them a bit when I get home tonight and let y'all know what I find...

-Chris

P.S. - Any luck with those Intel licenses yet? I know us yanks like to take our 4th holidays, but this is starting to get a bit unreasonable...

Edit: WHOA! Take a look at this!
http://hardware.slashdot.org/article.pl?sid=06/05/29/1424213
http://gamma.cs.unc.edu/GPUFFTW/
and http://www.cs.unm.edu/~kmorel/documents/fftgpu/fftgpu.pdf (Skip to 'Implementation' unless you're really hardcore or just curious...
ID: 358928 · Report as offensive
Pepperammi

Send message
Joined: 3 Apr 99
Posts: 200
Credit: 737,775
RAC: 0
United Kingdom
Message 358932 - Posted: 6 Jul 2006, 18:12:15 UTC - in response to Message 358928.  
Last modified: 6 Jul 2006, 18:12:57 UTC

Talking to a couple people about this, someone mentioned that there are add-in PCI cards that serve as hardware FFT co-processors... I havn't had a chance to research them yet, but if theyre reasonably priced and a library could be written to interface with it (think replacement to IPP calls) I imagine that could *really* kick the SETI app into overdrive... I'll research them a bit when I get home tonight and let y'all know what I find...

-Chris

Whilst your at it you might like to lookup 'ClearSpeed'. Don't know about reasonably price though. Didn't see anywhere you could buy them when was researching.
ID: 358932 · Report as offensive
Previous · 1 · 2 · 3 · 4 · 5 · Next

Message boards : Number crunching : HOW-TO: make your own optimized Windows Seti@Home client!


 
©2024 University of California
 
SETI@home and Astropulse are funded by grants from the National Science Foundation, NASA, and donations from SETI@home volunteers. AstroPulse is funded in part by the NSF through grant AST-0307956.