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

AuthorMessage
Profile Reuben Gathright
Avatar

Send message
Joined: 8 Mar 01
Posts: 213
Credit: 14,594,579
RAC: 0
United States
Message 370503 - Posted: 18 Jul 2006, 1:56:10 UTC

Thanks for posting this great programming tool.

I have been playing with assembly optimization of the code. The first inline assembly function actually worked, no real gains though. I hope to move more code to assembly and maybe reuse it in the later ALFA version of the software.

Two Questions:
How different will the next generation of code be?

Using your experience with the code, how much optimization do you think we could get out of this?
Overclock with the MSI G31M3-L and Intel E8600 3.33Ghz
Intel D865GLC Socket 478 Motherboard
~How To Overclock The Eee ASUS 1005HA Netbook To 1.9Ghz~
ID: 370503 · 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 370508 - Posted: 18 Jul 2006, 2:05:36 UTC

Hi Reuben,

I'm in contact with another person who made some inline assembly optimizations in pulsefind.cpp. His findings from using VTune were that it was the biggest bottleneck remaining, and whoever found a better mathematical way than the slew of additions going on there would probably accelerate things quite a lot.

Right now, tests indicate his code changes give some 3-10% performance gain on my Pentium-D system.

What function did you "attack"? I'm very interested in comparisons and information - if you want, you could head over to my site at http://www.zadra.org/seti_enhanced/ and register, I'll give you access to the development area. I've just posted some information about what he did there (as well as attached his modified pulsefind.cpp).

The more (input) the merrier (the gains) :o)

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

Optimized SETI@Home apps + Information
ID: 370508 · Report as offensive
Profile Reuben Gathright
Avatar

Send message
Joined: 8 Mar 01
Posts: 213
Credit: 14,594,579
RAC: 0
United States
Message 370513 - Posted: 18 Jul 2006, 2:17:18 UTC

Great, that's what I was looking for... the soup of addition ops!

Will login to your forums soon.
Overclock with the MSI G31M3-L and Intel E8600 3.33Ghz
Intel D865GLC Socket 478 Motherboard
~How To Overclock The Eee ASUS 1005HA Netbook To 1.9Ghz~
ID: 370513 · Report as offensive
Profile -= Vyper =-
Volunteer tester
Avatar

Send message
Joined: 5 Sep 99
Posts: 1652
Credit: 1,065,191,981
RAC: 2,537
Sweden
Message 371510 - Posted: 19 Jul 2006, 9:04:28 UTC - in response to Message 370508.  

Hi Reuben,

I'm in contact with another person who made some inline assembly optimizations in pulsefind.cpp. His findings from using VTune were that it was the biggest bottleneck remaining, and whoever found a better mathematical way than the slew of additions going on there would probably accelerate things quite a lot.

Right now, tests indicate his code changes give some 3-10% performance gain on my Pentium-D system.

What function did you "attack"? I'm very interested in comparisons and information - if you want, you could head over to my site at http://www.zadra.org/seti_enhanced/ and register, I'll give you access to the development area. I've just posted some information about what he did there (as well as attached his modified pulsefind.cpp).

The more (input) the merrier (the gains) :o)

Regards,
Simon.


Hi i've been following this for a while now..

Just wondered if there is any benefit to compile a 64bit version along with more spare registers of use to "middle store" data on it's way to ram..

And i noticed this file in the code amd64fft8g.cpp, is that even beeing used somewhere. It's seems to be amd specific optimisation but i cant even recall that filename being used in any file in the build? Is that just me or does compilers work in a different manor?

Kind Regards Vyper



_________________________________________________________________________
Addicted to SETI crunching!
Founder of GPU Users Group
ID: 371510 · Report as offensive
Profile Reuben Gathright
Avatar

Send message
Joined: 8 Mar 01
Posts: 213
Credit: 14,594,579
RAC: 0
United States
Message 371674 - Posted: 19 Jul 2006, 17:21:28 UTC

A better use of the registers would be using them to store the results of multiple simultaneous addition operations.

It is not easy to control where data is stored in the CPU cache. You would need to constantly "query" the cache for a pointer to the next available memory block.

Of course, I have only been doing this for a few years as a hobby (no one wants to pay me for an ASM based database system :). If someone has any idea of how to control cache allocation, not just registers, please post some sample code!
Overclock with the MSI G31M3-L and Intel E8600 3.33Ghz
Intel D865GLC Socket 478 Motherboard
~How To Overclock The Eee ASUS 1005HA Netbook To 1.9Ghz~
ID: 371674 · Report as offensive
Profile -= Vyper =-
Volunteer tester
Avatar

Send message
Joined: 5 Sep 99
Posts: 1652
Credit: 1,065,191,981
RAC: 2,537
Sweden
Message 390340 - Posted: 6 Aug 2006, 19:33:10 UTC - in response to Message 371674.  

Is there someone out there which have the possibility to try a xT compiled chicken S@H app.

This is STRICTLY testing only because it has been compiled with trial versions of IPP and is NOT for distributing..

If all went well this should be a Core2 processor optimized app and i just want to know how well it crunches results on a Core2 based system compared to the regular SSE2/SSE3 app from chicken.

Someone out there who volunteers should drop me a mail.. laracroft@telia.com

Kind Regards Vyper

_________________________________________________________________________
Addicted to SETI crunching!
Founder of GPU Users Group
ID: 390340 · 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 390368 - Posted: 6 Aug 2006, 20:08:52 UTC

Vyper,

I've experimented with SSE4 /QxT compiled versions, but they have not shown any speed difference to SSE3 versions compiled with /QxP.

So far, only one person has tested them on an x6800 @ 3.52 GHz, so there may yet be some speed gains to be had.

In any case, I'm interested in your work - if you want, you can head over to my site and register, I'm trying to get all people working on optimizations together in one place to share brainpower. I'll bump your access to the test group.

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

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

Send message
Joined: 3 Aug 99
Posts: 305
Credit: 6,157,052
RAC: 0
Canada
Message 390633 - Posted: 7 Aug 2006, 1:09:27 UTC - in response to Message 390340.  

Is there someone out there which have the possibility to try a xT compiled chicken S@H app.

This is STRICTLY testing only because it has been compiled with trial versions of IPP and is NOT for distributing..

If all went well this should be a Core2 processor optimized app and i just want to know how well it crunches results on a Core2 based system compared to the regular SSE2/SSE3 app from chicken.

Someone out there who volunteers should drop me a mail.. laracroft@telia.com

Kind Regards Vyper



Vyper

I have a dual core 3.4 running Windows server 2003 standard x64 edition.
If you like I can test your app :-)


ID: 390633 · Report as offensive
Profile -= Vyper =-
Volunteer tester
Avatar

Send message
Joined: 5 Sep 99
Posts: 1652
Credit: 1,065,191,981
RAC: 2,537
Sweden
Message 391342 - Posted: 7 Aug 2006, 21:16:36 UTC - in response to Message 390633.  

Is there someone out there which have the possibility to try a xT compiled chicken S@H app.

This is STRICTLY testing only because it has been compiled with trial versions of IPP and is NOT for distributing..

If all went well this should be a Core2 processor optimized app and i just want to know how well it crunches results on a Core2 based system compared to the regular SSE2/SSE3 app from chicken.

Someone out there who volunteers should drop me a mail.. laracroft@telia.com

Kind Regards Vyper



Vyper

I have a dual core 3.4 running Windows server 2003 standard x64 edition.
If you like I can test your app :-)



Head over to Chicken's site.
He has made a more thoroughly compiled SSE4 version than i ever succeded with.
Sorry for the inconvinience..

//Vyper

_________________________________________________________________________
Addicted to SETI crunching!
Founder of GPU Users Group
ID: 391342 · Report as offensive
Demi
Volunteer tester

Send message
Joined: 27 Aug 03
Posts: 4
Credit: 451,155
RAC: 0
Korea, South
Message 394308 - Posted: 11 Aug 2006, 5:12:20 UTC
Last modified: 11 Aug 2006, 5:31:38 UTC

Hello
I use VS2005 and Intel C++ Compiler, IPP, MKL(all newest).
Source from here 'http://www.zadra.org/seti_enhanced/index.php?module=Downloads;sa=download;id=5;mirror=1'
I just modified include, lib directory. But rebuild solusion is stop with error.

error 6 error: a value of type "const char *" cannot be used to initialize an entity of type "char *" ..\\..\\..\\boinc\\api\\gutil_text.C
error 7 error: a value of type "const char *" cannot be assigned to an entity of type "char *" ..\\..\\..\\boinc\\api\\gutil_text.C
warning 66 cannot open precompiled header input file .\\Release\\seti_boinc.pchi Command-line error

also 64 warnings, sad=/
ID: 394308 · Report as offensive
Profile -= Vyper =-
Volunteer tester
Avatar

Send message
Joined: 5 Sep 99
Posts: 1652
Credit: 1,065,191,981
RAC: 2,537
Sweden
Message 394426 - Posted: 11 Aug 2006, 10:50:15 UTC - in response to Message 394308.  

Hello
I use VS2005 and Intel C++ Compiler, IPP, MKL(all newest).
Source from here 'http://www.zadra.org/seti_enhanced/index.php?module=Downloads;sa=download;id=5;mirror=1'
I just modified include, lib directory. But rebuild solusion is stop with error.

error 6 error: a value of type "const char *" cannot be used to initialize an entity of type "char *" ..\\..\\..\\boinc\\api\\gutil_text.C
error 7 error: a value of type "const char *" cannot be assigned to an entity of type "char *" ..\\..\\..\\boinc\\api\\gutil_text.C
warning 66 cannot open precompiled header input file .\\Release\\seti_boinc.pchi Command-line error

also 64 warnings, sad=/


I have tried a year ago to compile too with VS2005 and it gave me errors back then. After that i tried Chicken's build and following directions and it worked.
Why it does error out with VS2005 i don't know but it's rumoured that it has some problem with VS2005 instead of using VS2003 .. So for now i don't have an answer but to confirm what you have just said..

Head over to chicken's site and register at their forum to get help..

Kind Regards Vyper


_________________________________________________________________________
Addicted to SETI crunching!
Founder of GPU Users Group
ID: 394426 · 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 394961 - Posted: 12 Aug 2006, 0:14:43 UTC - in response to Message 394308.  
Last modified: 12 Aug 2006, 0:15:53 UTC

Hello
I use VS2005 and Intel C++ Compiler, IPP, MKL(all newest).
Source from here 'http://www.zadra.org/seti_enhanced/index.php?module=Downloads;sa=download;id=5;mirror=1'
I just modified include, lib directory. But rebuild solusion is stop with error.

error 6 error: a value of type "const char *" cannot be used to initialize an entity of type "char *" ..\\..\\..\\boinc\\api\\gutil_text.C
error 7 error: a value of type "const char *" cannot be assigned to an entity of type "char *" ..\\..\\..\\boinc\\api\\gutil_text.C
warning 66 cannot open precompiled header input file .\\Release\\seti_boinc.pchi Command-line error

also 64 warnings, sad=/

Hi Demi,

I have also had this problem with VS 2005 (as well as all the other people I know who tried to use it to compile S@H).

Eric Korpela has said that it should actually not cause problems, so I can only surmise that VS2005 has some issues with C/C++ syntax that worked with .NET/2003. The fun part is that the compiler used in both cases is the exact same - Intel's ICC (and therefore, is definitely not the source of the problem IMO). Shouldn't syntax checking be done by the compiler and not the IDE? Oh well, blame Microsoft ;o)

The even worse part is that 64-bit support with ICC is patchy with 2003, at best. I have not succeeded in building a native 64-bit Windows binary with VS 2003, it keeps erroring out with "Target machine type AMD64 conflicts with module machine type X86" even when I specified the machine type manually in the project properties after installing the 64-bit SDK(s) necessary and adjusting my environment vars (running VS 2003 from a .cmd file to set up 64-bit compilation) and linking 64-bit libs.

So it's a rock and a hard place, really. 64 bit versions have been shown to offer significant performance advantages on Linux, it stands to reason they should do similar things on Windows - so it's high up on my list of things to be done.

Anyway, I'm sorry to say that unless you know how to track down and fix the sources responsible for generating that error, you'll have to use VS 2003 for the time being.

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

Optimized SETI@Home apps + Information
ID: 394961 · 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 396395 - Posted: 13 Aug 2006, 12:30:26 UTC

Hi folks,

I'm in contact with someone who has successfully managed to build on VS 2005 - he's told me what needs to be changed to make it work.

I will put up a version meant for VS 2005 shortly (and test whether it also still works with 2003, it should though).

So good news for all of you who do not have access to VS 2003, and this should also make creating Windows 64-bit executables much easier (Intel and Microsoft both say so in their docs, anyway).

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

Optimized SETI@Home apps + Information
ID: 396395 · Report as offensive
Demi
Volunteer tester

Send message
Joined: 27 Aug 03
Posts: 4
Credit: 451,155
RAC: 0
Korea, South
Message 417077 - Posted: 8 Sep 2006, 6:41:18 UTC - in response to Message 396395.  

Thanks for work.
When you put it up, leave a reply here :)
Regard.

Hi folks,

I'm in contact with someone who has successfully managed to build on VS 2005 - he's told me what needs to be changed to make it work.

I will put up a version meant for VS 2005 shortly (and test whether it also still works with 2003, it should though).

So good news for all of you who do not have access to VS 2003, and this should also make creating Windows 64-bit executables much easier (Intel and Microsoft both say so in their docs, anyway).

Regards,
Simon.


ID: 417077 · Report as offensive
Previous · 1 · 2 · 3 · 4 · 5

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.