optimization for athlon XP and 3DNow under windows

Message boards : Number crunching : optimization for athlon XP and 3DNow under windows
Message board moderation

To post messages, you must log in.

AuthorMessage
dreaad

Send message
Joined: 9 Apr 04
Posts: 2
Credit: 737,358
RAC: 0
Italy
Message 38582 - Posted: 20 Oct 2004, 19:14:19 UTC

has someone compiled boinc and seti specifically optimized for athlon XP with 3DNow istructions under windows? i've tried with visual studio .net 2003 but there is only option for SSE and SSE2 istructions.

then when i've installed the boinc version 4.12 the wu's time is increased a lot (from 3h15m to 4h45m).I have an athlon XP 2600+.

thank you to everyone.


bye
ID: 38582 · Report as offensive
dreaad

Send message
Joined: 9 Apr 04
Posts: 2
Credit: 737,358
RAC: 0
Italy
Message 38805 - Posted: 21 Oct 2004, 13:52:39 UTC

has ever anyone tried to compile boinc himself for athlon XP?

i'd like to run an optimized version of boinc for my PC :-).

bye
ID: 38805 · 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 38823 - Posted: 21 Oct 2004, 15:00:30 UTC

3DNow is a 2 floating point at once feature of AMD.

No compiler will figure out that a person is using a series of 2 floats in a loop (...well virtually no compiler), except in simple cases like adding all the values in the buffer onto a single total (the sum of the buffer).

SSE is 4 floats at once feature created by intel and used on later Althons.
SSE2 is 2 bigger (more precise) floats feature.

When you turn on SSE or SSE2 with VC++ compiler, it just changes all float code to use the lower part of the SSE feature (1/4 of the SSE register capacity).

To make REAL uuse of 3DNow or SSE you need to rewrite the seti source code (note, seti...not boinc...two different programs).

Something like ..oh..this for example
	for(int j = 0; j >1;
		amd_preCache(theBufs, pwr2, len);

		A = s_get(fftBuf(4));			B = s_get(fftBuf(5));
		x0 = s_add(A, B);				x1 = s_sub(A, B);

		A = s_get(fftBuf(6));			B = s_get(fftBuf(7));
		x2 = s_add(A, B);				x3 = s_sub(A, B);
		x3 = swap_negRI(x3);

		y4 = s_add(x0, x2);				y6 = s_sub(x0, x2);
		y5 = s_add(x1, x3);				y7 = s_sub(x1, x3);

		A = s_get(fftBuf(2));			B = s_get(fftBuf(3));
		x2 = s_add(A, B);				x3 = s_sub(A, B);

		y5 = s_accumCX(y5, y5);
		y7 = s_accumCX(y7, y7);

ID: 38823 · Report as offensive

Message boards : Number crunching : optimization for athlon XP and 3DNow under windows


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