What's a good CPU to get?

Message boards : Number crunching : What's a good CPU to get?
Message board moderation

To post messages, you must log in.

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

AuthorMessage
Profile Legacy
Avatar

Send message
Joined: 10 Dec 99
Posts: 134
Credit: 1,778,571
RAC: 0
Singapore
Message 24866 - Posted: 11 Sep 2004, 1:04:26 UTC

Ok, download service pack 5 and processor pack. Waiting for your "how to".


ID: 24866 · Report as offensive
mostly_harmless Crowdfunding Project Donor*Special Project $75 donorSpecial Project $250 donor
Avatar

Send message
Joined: 19 May 99
Posts: 27
Credit: 1,948,583
RAC: 0
United States
Message 25304 - Posted: 11 Sep 2004, 22:27:51 UTC
Last modified: 13 Sep 2004, 18:21:46 UTC

Just checked the pages and found this.
http://boinc.berkeley.edu/software.php
Sorry but MSVS 7 is required.

boinc_public-cvs-2004-9-11 compiled with .NET 2003 and SSE2

Boinc benchmark results with 1.8GHz P4 1GB PC2700 RAM Windows XP SP2
/G7 /arch:SSE2 verses default settings
+15% Whetstone
-2% Dhrystone (don't ask me why, I don't know)
average of top 3 scores

Disclaimer: Do the following at your own risk. By reading the following you agree to NOT hold the author and other contributors liable for any damages caused directly or indirectly by the instructions below and any updates to the instructions.

It is possible that your processor will run a little warmer with an optimized program so keep an eye on your CPU temperature. Otherwise the worst that can happen is that you compile for the wrong processor and it crashes. If you don’t know what CPU and instruction sets you have then you shouldn’t try this.

Now the nano-howto:

Download the latest public CVS for BOINC and the latest CVS for setiathome.

Now remember BOINC is only the front-end and logistics. Optimizing it would mostly ensure that the benchmark reflects the right numbers speed up minor things. The setiathome program is the one that actually does the work so it should be optimized if you're going to do anything at all.

Boinc first

1. Unzip…

2. Go to the win_build directory and open the boinc.sln file in MSVS.

3. On the tool bar change the configuration from Debug to Release. This can also be done from "Build-->Configuration Manager" and then change the "Active Solution Configuration".

4. Now we select the projects that we want to optimize. Select either all the projects on the left or just ones you want to optimize. To make sure the benchmarks are right at least get boinc_cli.

5. With the projects selected go to "Project-->Properties". On the left side select "C/C++" which will open the folder and show more options.

6. First select "Optimization" and change "Optimize For Processor" to "Pentium 4 and Above(/G7)." Do this only if you have a qualifying processor of course.

7. Second go to "Code Generation" on the left and change "Enable Enhanced Instruction Set" to "Streaming SIMD Extensions 2 (/arch:SSE2)." None P4 or 32bit Athlon users will have to select SSE or the compiled executable won't run. If you don’t know what you have then you should stop right now.

8. Click on "OK" to come back to the main screen. Now go to "Build-->Build Solution" to compile the program. The boinc_guirpctest will probably fail, just ignore it.

9. If things go okay the files will be under the win_build/Build/Release directory. You don't need any of the sub folders.

Now setiathome

10. Unzip it into its own directory at the same level as the boinc directory used above. Make sure the boinc directory is named "boinc" or setiathome won't find the files it needs. By default the boinc directory is named boinc_public so you’ll probably have to rename it.
/blah
/blah/boinc
/blah/seti_boinc

11. Go in to the client/win_build directory and open seti_boinc.sln in MSVS.

12. Take the same steps (3-8) as we did with boinc. It'll compile and give you an executable. The compiled files are in the same relative area as before. If you run in to errors about "std_fixes.h" then it's having problems finding the boinc source files so reread step 10.

-------------Contributed by Legacy for above step---------------
Under PROJECT PROPERTIES | C/C++ | GENERAL, change Debug Information Format from "Program Database for Edit & Continue (/ZI)" to "Program Database (/Zi)" else it won't compile and generate the error "cl : Command line error D2016 : '/O2' and '/ZI' command-line options are incompatible"
-----------------------------------------

So now you have both things compiled.

13. Make a boinc folder somewhere away from all the compile mess. Copy the compiled boinc files to it; remember you don't need the sub directories.

14. Run boinc_gui.exe or boinc_cli.exe and attach to the project. Once it attaches exit boinc completely.

15. In the boinc directory you created now there is a projects/setiweb.ssl.berkeley.edu directory. Copy the following compiled setiathome files into the setiweb.ssl.berkeley.edu directory.
setiathome_x.xx_windows_intelx86.exe
setiathome_x.xx_windows_intelx86.pdb (for debugging)

16. Create the app_info.xml as stated in:
http://boinc.berkeley.edu/anonymous_platform.php
17. Change it so that the filename and version match what you compiled. There are three places you have to change this.

Restart boinc and you should be done.

If there is something obviously wrong above please feel free to post corrections. I usually work on embedded stuff so this isn’t my area.
mostly_harmless
ID: 25304 · Report as offensive
Profile Legacy
Avatar

Send message
Joined: 10 Dec 99
Posts: 134
Credit: 1,778,571
RAC: 0
Singapore
Message 25469 - Posted: 12 Sep 2004, 10:29:06 UTC - in response to Message 25304.  

> Just checked the pages and found this.
> http://boinc.berkeley.edu/software.php
> Sorry but MSVS 7 is required.
>
> boinc_public-cvs-2004-9-11 compiled with .NET 2003 and SSE2
>
> Boinc benchmark results with 1.8GHz P4 1GB PC2700 RAM Windows XP SP2
> /G7 /arch:SSE2 verses default settings
> +15% Whetstone
> -2% Dhrystone (don't ask me why, I don't know)
> average of top 3 scores
>
> Disclaimer: Do the following at your own risk. By reading the following you
> agree to NOT hold the author and other contributors liable for any damages
> caused directly or indirectly by the instructions below and any updates to the
> instructions.
>
> It is possible that your processor will run a little warmer with an optimized
> program so keep an eye on your CPU temperature. Otherwise the worst that can
> happen is that you compile for the wrong processor and it crashes. If you
> don’t know what CPU and instruction sets you have then you shouldn’t try
> this.
>
> Now the nano-howto:
>
> Download the latest public CVS for BOINC and the latest CVS for setiathome.
>
> Now remember BOINC is only the front-end and logistics. Optimizing it would
> mostly ensure that the benchmark reflects the right numbers speed up minor
> things. The setiathome program is the one that actually does the work so it
> should be optimized if you're going to do anything at all.
>
> Boinc first
>
> 1. Unzip…
>
> 2. Go to the win_build directory and open the boinc.sln file in MSVS.
>
> 3. On the tool bar change the configuration from Debug to Release. This can
> also be done from "Build-->Configuration Manager" and then change the
> "Active Solution Configuration".
>
> 4. Now we select the projects that we want to optimize. Select either all
> the projects on the left or just ones you want to optimize. To make sure the
> benchmarks are right at least get boinc_cli.
>
> 5. With the projects selected go to "Project-->Properties". On the left
> side select "C/C++" which will open the folder and show more options.
>
> 6. First select "Optimization" and change "Optimize For Processor" to
> "Pentium 4 and Above(/G7)." Do this only if you have a qualifying processor
> of course.
>
> 7. Second go to "Code Generation" on the left and change "Enable Enhanced
> Instruction Set" to "Streaming SIMD Extensions 2 (/arch:SSE2)." None P4 or
> 32bit Athlon users will have to select SSE or the compiled executable won't
> run. If you don’t know what you have then you should stop right now.
>
> 8. Click on "OK" to come back to the main screen. Now go to
> "Build-->Build Solution" to compile the program. The boinc_guirpctest will
> probably fail, just ignore it.
>
> 9. If things go okay the files will be under the win_build/Build/Release
> directory. You don't need any of the sub folders.
>
> Now setiathome
>
> 10. Unzip it into its own directory at the same level as the boinc directory
> used above. Make sure the boinc directory is named "boinc" or setiathome
> won't find the files it needs. By default the boinc directory is named
> boinc_public so you’ll probably have to rename it.
> /blah
> /blah/boinc
> /blah/seti_boinc
>
> 11. Go in to the client/win_build directory and open seti_boinc.sln in MSVS.
>
> 12. Take the same steps (3-8) as we did with boinc. It'll compile and give
> you an executable. The compiled files are in the same relative area as
> before. If you run in to errors about "std_fixes.h" then it's having problems
> finding the boinc source files so reread step 10.

This is for the Seti_Boinc compile.

You missed a step here. Under PROJECT PROPERTIES | C/C++ | GENERAL, change Debug Information Format from "Program Database for Edit & Continue (/ZI)" to "Program Database (/Zi)" else it won't compile and generate the error "cl : Command line error D2016 : '/O2' and '/ZI' command-line options are incompatible
"

> So now you have both things compiled.
>
> 13. Make a boinc folder somewhere away from all the compile mess. Copy the
> compiled boinc files to it; remember you don't need the sub directories.
>
> 14. Run boinc_gui.exe or boinc_cli.exe and attach to the project. Once it
> attaches exit boinc completely.
>
> 15. In the boinc directory you created now there is a
> projects/setiweb.ssl.berkeley.edu directory. Copy the following compiled
> setiathome files into the setiweb.ssl.berkeley.edu directory.
> setiathome_x.xx_windows_intelx86.exe
> setiathome_x.xx_windows_intelx86.pdb (for debugging)
>
> 16. Create the app_info.xml as stated in:
> http://boinc.berkeley.edu/anonymous_platform.php
> 17. Change it so that the filename and version match what you compiled.
> There are three places you have to change this.
>
> Restart boinc and you should be done.
>
> If there is something obviously wrong above please feel free to post
> corrections. I usually work on embedded stuff so this isn’t my area.
> mostly_harmless
>


ID: 25469 · Report as offensive
mostly_harmless Crowdfunding Project Donor*Special Project $75 donorSpecial Project $250 donor
Avatar

Send message
Joined: 19 May 99
Posts: 27
Credit: 1,948,583
RAC: 0
United States
Message 25603 - Posted: 12 Sep 2004, 18:27:25 UTC

Hehe, I knew I'd forget something.

Sorry.
mostly_harmless
ID: 25603 · Report as offensive
Profile Legacy
Avatar

Send message
Joined: 10 Dec 99
Posts: 134
Credit: 1,778,571
RAC: 0
Singapore
Message 25606 - Posted: 12 Sep 2004, 18:39:10 UTC

No problem. I got it running, looks to be about 10-15% faster and no change in temperature.


ID: 25606 · Report as offensive
mostly_harmless Crowdfunding Project Donor*Special Project $75 donorSpecial Project $250 donor
Avatar

Send message
Joined: 19 May 99
Posts: 27
Credit: 1,948,583
RAC: 0
United States
Message 25620 - Posted: 12 Sep 2004, 19:04:44 UTC

This is in terms of work units right? SWEET! DUDE! SWEET! DUDE!
mostly_harmless
ID: 25620 · Report as offensive
Profile Legacy
Avatar

Send message
Joined: 10 Dec 99
Posts: 134
Credit: 1,778,571
RAC: 0
Singapore
Message 25654 - Posted: 12 Sep 2004, 21:14:06 UTC

And all thanks to you for posting the "how to". Without you I couldn't have done it. Will post a picture tomorrow.


ID: 25654 · Report as offensive
Cryz

Send message
Joined: 22 Feb 02
Posts: 46
Credit: 9,737
RAC: 0
Belgium
Message 25844 - Posted: 13 Sep 2004, 9:22:13 UTC

Thank you for the "how-to"

I've been playing around with the options and got an increase of over 10% in the floatingpoint and a drop of about 7% in the integer speed but, and this is more important, the first 2 wu's finished with this code got done alot faster. Previous from 3:27 to 3:45, now 3:00 and 3:01

Now waiting for wu 3...
ID: 25844 · Report as offensive
WildWeasel

Send message
Joined: 2 Jun 99
Posts: 5
Credit: 485,315
RAC: 0
United Kingdom
Message 25920 - Posted: 13 Sep 2004, 15:08:43 UTC - in response to Message 25844.  

> Thank you for the "how-to"
>
> I've been playing around with the options and got an increase of over 10% in
> the floatingpoint and a drop of about 7% in the integer speed but, and this is
> more important, the first 2 wu's finished with this code got done alot faster.
> Previous from 3:27 to 3:45, now 3:00 and 3:01
>

Any chance of posting a link to the binary, so those of us with no access to MSC7 can play with it ?
ID: 25920 · Report as offensive
Profile Benher
Volunteer developer
Volunteer tester

Send message
Joined: 25 Jul 99
Posts: 517
Credit: 465,152
RAC: 0
United States
Message 25943 - Posted: 13 Sep 2004, 16:27:31 UTC

Hey all,

For CPU comparisons maybe we could use a standard format?

# Hrs/WU:
CPU Model:
L2 Cache:
CPU Mhz:
Cache Mhz:

For the L2 Mhz speed, programs like CPU-Z would report that
for you. (go to www.cpuid.com to get it)

----
Recompiling with /Arch:SSE, or SSE2 etc.

Seti_boinc uses virtually all single precision floating
calculations (32 bit).
SSE is for single, SSE2 is mostly for double (64 bit).

x386+ FPU code uses 80 bits for all calculations, and then
stores the results in whatever size the programmer chooses.
Thus, changing to SSE does lose some precision in calculations,
but it often depends on how the compiler generates code.

-----
Benchmarks: There is a compiler bug with the benchmarks.
A fix has been submitted. Basically the compiler was being
very clever and omitting parts of the benchmark.

With unfixed benchmark code, the more optimization flags you
turn on, the more likely you are to ommit even more.
[and increase benchmark scores ;) ]

The benchmark code computes several math functions over and
over in loops, and then figures out how long it took to do.
But the end results of these math functions aren't used
outside of the benchmark code.
Therefore the compiler omitted some of these.
ID: 25943 · Report as offensive
mostly_harmless Crowdfunding Project Donor*Special Project $75 donorSpecial Project $250 donor
Avatar

Send message
Joined: 19 May 99
Posts: 27
Credit: 1,948,583
RAC: 0
United States
Message 26018 - Posted: 13 Sep 2004, 18:46:33 UTC

Benher, thanks for clearing things up. Now by losing precision we're talking about the going from 80bits to 32bits for intermediate steps right? How many sig figs are we talking about here (I guess I could look at the code)? Is it going to mess up any science? Also, if SETI uses mostly single precision and the benchmark uses double then how well is the benchmark reflecting actual performance?

WildWeasel, there is a couple of issues for releasing binaries. First there is trust and security. I would never trust a binary from an unknown third party so it would have to be checked by several different people. Second if someone posts binaries then he/she will also be taking on the responsibility of updating these binaries. Bottom line, it's work someone will have to do for free.
mostly_harmless
ID: 26018 · Report as offensive
Profile Paul D. Buck
Volunteer tester

Send message
Joined: 19 Jul 00
Posts: 3898
Credit: 1,158,042
RAC: 0
United States
Message 26076 - Posted: 13 Sep 2004, 21:29:55 UTC - in response to Message 26018.  

> Benher, thanks for clearing things up. Now by losing precision we're talking
> about the going from 80bits to 32bits for intermediate steps right? How many
> sig figs are we talking about here (I guess I could look at the code)? Is it
> going to mess up any science? Also, if SETI uses mostly single precision and
> the benchmark uses double then how well is the benchmark reflecting actual
> performance?

In theory, the point of using an intermediate 80-bit precision to actually do the math is that when you truncate down to the 32-bit or 64-bit (single/double) you will lop off the error in the "noise" area of the mathematics.

The problem with iterative functions (and I am no mathematician that can explain this well) is that the noise can "crawl" up the into the area of where we have significant digits that will be passed out. This can happen especially when the optimizing compiler sees ways to get higher speeds by performing operations in orders we did not expect. So, instead of a continual "trimming" of noise, we continue to accumulate it, THEN truncate down to the output value which is now no longer the precise value we might have been expecting.

It is the whole point of chaos theories (as I understand it) to try to understand this type of effect. I just got introduced to it in the late 70's when I was working with a mathematician and watched our programs attempt new forms of random walks out of the ball-park of where they SHOULD have been.

THat is one of the reasons that slide rules still make sense, you don't pretend to have accuracy you truly don't have...

Oh, and we also have the big number times a very small number we have to throw in as that can really fluff the pooch ...
<p>
Click Me!


ID: 26076 · Report as offensive
Profile PyroFox
Avatar

Send message
Joined: 5 Apr 03
Posts: 155
Credit: 213,891
RAC: 0
Canada
Message 26134 - Posted: 13 Sep 2004, 23:34:57 UTC
Last modified: 14 Sep 2004, 0:07:29 UTC

I'm a programming "learner" (*cough* NOOB *cough*), and i'm curious.

I saw and setting for maximize speed or full optimization. I'm curious between the difference between the two. does full opt. include max. speed and others? if so, what are the others?

or what?


yes, i'm still in school!


oh..and would this work for a celery class with MMX instructions? I'm compiling right now so i can't check if this is an option. and I want to make sure here anyways.


also, can the same be applied to other such BOINC projects? (with the necessary modifications?)

i'll post my scores here in a bit.

=SCORES=

original BOINC:
1652 3465

Optimized BOINC:
1931 3498

So I seem to have gotton a 16.8% increase in the first benchmark, and a small 0.95% increase in the second. not bad :)

thx for the "how-to!"



-Fox again!

[/url]
ID: 26134 · Report as offensive
mostly_harmless Crowdfunding Project Donor*Special Project $75 donorSpecial Project $250 donor
Avatar

Send message
Joined: 19 May 99
Posts: 27
Credit: 1,948,583
RAC: 0
United States
Message 26151 - Posted: 14 Sep 2004, 0:35:39 UTC

PyroFox,

I'm not trying to be mean but...

Next time before you ask a technical question please try the help file or manual first. Otherwise you'll hear RTFM a lot. : )

Just open up that dialog and press help. It lists all the options with links to detailed descriptions.

Quoting from the help file:

----------------------------------------
/Ox
/Ox combines optimizing options to produce code that favors execution speed over smaller code size. /Ox can be combined with /Os (/Oxs) to favor smaller code size (optimize for size).

In general, /O2 should be preferred over /Ox and /O1 over /Oxs.

The effect is the same as using the following options:

/Obn, where n = 2
/Og
/Oi
/Os, /O, /Ot
/Oy
Note The use of Full Optimization implies the use of the Frame Pointer Omission (/Oy) option.
/Ox is mutually exclusive from:

/O1
/O2
/Od
--------------------------------------------------

mostly_harmless
ID: 26151 · Report as offensive
Profile Legacy
Avatar

Send message
Joined: 10 Dec 99
Posts: 134
Credit: 1,778,571
RAC: 0
Singapore
Message 26153 - Posted: 14 Sep 2004, 0:39:43 UTC

I tried, full opt. is actually slower. Max opt. produces the fastest times.


ID: 26153 · Report as offensive
Profile PyroFox
Avatar

Send message
Joined: 5 Apr 03
Posts: 155
Credit: 213,891
RAC: 0
Canada
Message 26161 - Posted: 14 Sep 2004, 0:58:18 UTC - in response to Message 26151.  
Last modified: 14 Sep 2004, 0:58:58 UTC

doubled!
ID: 26161 · Report as offensive
Profile PyroFox
Avatar

Send message
Joined: 5 Apr 03
Posts: 155
Credit: 213,891
RAC: 0
Canada
Message 26162 - Posted: 14 Sep 2004, 0:58:46 UTC - in response to Message 26151.  

> PyroFox,
>
> I'm not trying to be mean but...
>
> Next time before you ask a technical question please try the help file or
> manual first. Otherwise you'll hear RTFM a lot. : )

yea i know, lol. usually i would look at the program a little more. but school's bogging me down, and with my mother going through chemo, i have absolutely NO time to do too much lol, unless it was a weekend. I can't wait that long -_-

thx tho!, after a bumpy start (2 units finished in 21 sec exactly, fluke or coincidencce..i dunno) she seems to be running fine.

-Fox
[/url]
ID: 26162 · Report as offensive
Profile Legacy
Avatar

Send message
Joined: 10 Dec 99
Posts: 134
Credit: 1,778,571
RAC: 0
Singapore
Message 26298 - Posted: 14 Sep 2004, 8:01:28 UTC

Harmless, do you noticed that after compiling the BOINC program, the "To Completion" times while the WU is in progrss is alot more accurate?


ID: 26298 · Report as offensive
WildWeasel

Send message
Joined: 2 Jun 99
Posts: 5
Credit: 485,315
RAC: 0
United Kingdom
Message 26314 - Posted: 14 Sep 2004, 9:09:16 UTC - in response to Message 26018.  


> WildWeasel, there is a couple of issues for releasing binaries. First there
> is trust and security. I would never trust a binary from an unknown third
> party so it would have to be checked by several different people. Second if
> someone posts binaries then he/she will also be taking on the responsibility
> of updating these binaries. Bottom line, it's work someone will have to do
> for free.
> mostly_harmless
>
Understood, although I was going to run it on my barebones development m/c against stock boinc purely for comparisons.

A little while ago, I managed to get the seti app compiled under MSVS6(SP5) with SSE2 upgrade, although there was lots of work needed as several files were missing from the 'project' and whole chunks of the include path clashed. The results were not encouraging as even with all relevant optimisations the test WU took 20 mins longer than under the stock app!

Now I wouldn't be so arrogant as to class myself as anything other than a noob at C++, so this could well explain it, although I can find my way around a source file having programmed in plenty of other languages.

Intrigued by your mail yesterday, I downloaded a copy of VC++ Express Beta before work this morning and fired it up following the instructions from this thread for installing boinc/seti_boinc. Only had time for a couple of compile cycles, but got multiple 'not found' and 'windows.h' errors etc (same errors as found in previous VS6 experience).

As this is a clean XP install with stock boinc being the only existing app on it, what am I doing wrong ? Both boinc and seti_boinc are under the same parent directory.

Thanks in anticipation

Wildweasel
ID: 26314 · Report as offensive
Profile Legacy
Avatar

Send message
Joined: 10 Dec 99
Posts: 134
Credit: 1,778,571
RAC: 0
Singapore
Message 26315 - Posted: 14 Sep 2004, 9:13:20 UTC

You need to start a fresh project. Unzip the CSVs to a new directory and start over, if you follow the step properly, you should get it working.


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

Message boards : Number crunching : What's a good CPU to get?


 
©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.