Posted
by
Cliff
on Tuesday October 14, 2003 @04:59PM
from the lead-foot-throttle-up dept.

gbulmash asks: "I'm looking to see just how much performance I can squeeze out of a new Athlon-64 system. This isn't for benchmarking, but more like you got a new car and you're looking for a long, straight road where you can push the needles into the red before letting off the gas (and then maybe a twisty mountain road to test cornering). Can the all-knowing Slashdot readers recommend some AMD-64 enabled/optimized distros and packages that will let us new proud papas of AMD-64 systems fully open up the throttle on these bad girls and see what they're made of?"

distributed.net? OGRs were particularly Mac (altivec engine) friendly as I recall, a friend's 300Mhz ish imac would regularly post equivelent scores to up to 1 ghz k7 and P3s. I would assume that the 64 bit processor would be better at these too, the engine might need some optimization work done first though.

amazingly enough, the athlon 64 does not seem to have a vastly large number increase in opcodes. I believe they added another set to that long list of opcode types... MMX, MMX2, SSE, etc but the only real preformance increase comes from allowing it to access memory a double word at a time.
the problem with that is it only really increases the preformance of floats and arrays if properly optimized.

The most benefit will most likely come from the 8 extra general purpose registers the amd64 cpus have. The x86 has always been a register-starved architecture, and adding a few will result in a lot less register saving/restoring overhead. That alone will seriously increase performance.

Nice coding, dude, except that it will run forever. When you're using a test you use a DOUBLE EQUALS sign, we learnt this weeks ago in class and its pretty basic - your code will just assign 0xFFFFFFFF to the variable over and over.

I'm a bit confused why you'd want to assign a string to a double in the first place, but I guess in C everything is a number at the end of the day so it's still valid.

The double equals sign is in fact a conditional operator, and the single equals sign is in fact an assignment operator, but the != is by no means a single equals sign. It is correct as stated, read simply "not equals".Also, he is not assigning a string. He is assigning a hex value 0xFFFFFFFF. By prepending a value with 0x you are stating that the attached sequence should be interpreted as a series of hex characters -- 0-9 and A-F. If you haven't lea

Also, he is not assigning a string. He is assigning a hex value 0xFFFFFFFF...

Actually, he's not assigning anything...he's comparing the number 4294967295 to the value of i. Thing is, his code is a sort of a trick. The first time into the while loop, the test will pass (because 1 is not equal to 4294967295), the statement below it will be executed, and the program will exit (return 0). With proper brackets (because slashdot is stupid and won't let you indent), the code would look like the code below. T

if it was a:
while(i++ != 0xFFFFFFFF)
{
return 0
}
it would run once and then exit...
but because of the semi-colon right after the comparison, nothing is executed in the loop, it just loops, then once i is sufficiently large... it will return 0... although if it was void main, the return wouldn't be needed at all...:)

actually your wrong, the original code will compile fine in most compilers, since the braces which are missing are implicit, it's simply a quickie while loop that increases the value in a double, the bracing in the original code is exactly as it should be.

it initializes the variable, declares a while loop which only accomplishes the autoincrement, looping until it reaches the proper value. Then when finished with the while loop it exits with a return value of zero, the return statement is not part of nor

Note that you have to turn optimications off, or declare i as volitale or any half way decient compiler will optimise it out and turn your program into
int main(int argc, char * argv)
{
return 0;
}
which is not what you want.

I would also recomend that you change that double to a long long or something (been too long since I've done 64 bit, so I don't recall the exact syntax), double is plenty of space to store [a rounded representation of] that number on most platforms such as x86, and most FPUs are g

The other applications that do really well with more memory are database type operations, where you are caching 16 GB of tables in memory so you don't have to go to disk (note, yes this means you need about 20 GB of RAM on the system)

Big monster databases, assuming you loaded it with much memory as you could afford. You start doing work on a 5G database on a machine with 6G or so of RAM and can actually use it all... and leave the Wintel boxes behind eating your dust.

A 5 gig database isn't a monster if we are talking Oracle or MS/SQL, but a 5 gig Foxpro database with associated index and memo fields is a monster.

But I agree with you... along the lines of 'if you are gonna dream, dream big' I see where you are going : if you are going to throttle your box with a large database (in order to make it look good against a 32 bit machine,) go for broke.

Oh yea, and just like we saw when we went from 8 bit to 16 bit computing, and again when we went from 16 bit to 32 bit comp

It does (it's just like the 32-bit x86 multiply except it puts the 128-bit result into rax:rdx, instead of the 64-bit result into eax:edx). And so, yes, you can do sick fast PK crypto on it. Half the number of words => 1/4 as much work, cause lots of the underlying algorithms (like multiplication) are O(n^2), or sometimes O(n^~1.6).

the worst that can happen is smoke rolling out of the machine! And he wasn't talking about OC'n so that shouldn't happen either. He just wants to know where his hard earned cash went and feel "warm-n-fuzzy" inside!

Dude, it's late, put down the caffine and step away from the coffee pot!

Yeah, aside from press releases....Try to find something useful that runs on x86_64 hardware. Aside from RH Beta, Gentoo, & SuSE, there isn't much out there for these opterons. Good thing they perform damn well in 32 bit.

Ok, so maybe this is a bit troll-ish, but if you've spent the money to buy one of these things, wouldn't you have a target _application_ to run on said platform?

I mean, the only thing you've proven is you can purchase something hot off the assembly line so that it can sit there and do 0 work for you. Don't you have an application or server or _something_ that you intend to use this machine for?

If not, I hope you have some kind of justification for this box for your management in their budget;)

Many people -- unlike me -- can afford their very own opteron system. The major stumbling block today is the motherboard, which will run you a good five hundred bucks. You can get a tolerably speedy processor for a mere $250 or so.

Opteron also has more cache and, IIRC, a more fully developed memory controller. So there is a reason besides SMP - though SMP is obviously the driving force behind Opteron sales over Athlon 64, at this point.

I've got some Win 32 bit games, but the main reason for this is that I've never owned a bleeding-edge, top-of-the-line system before. Could never afford one before.

With upcoming life events, it's unlikely I'll be able to justify something this new/hot/expensive for the next 20 years. So my wife agreed not to complain if I bought a badass system as a b-day present for myself.

you're looking for a long, straight road where you can push the needles into the red before letting off the gas (and then maybe a twisty mountain road to test cornering)

No idea about auto drivers, but bikers have a word for this: squid. It's about as relevant as graphics card benchmarks.

See, anyone worth a salt tailors the race to their bike. I ride a touring bike. I'll race any super sport ten laps around Laguna Seca. But we start and end the race in Maryland. My father has a super-motardish bike. He'll

I organise a small number-crunching project (computational number-theory),and if you'd like to race my code on your Athlon-64 verses everyone else'sPII/III/4s and Athlons, I can let you have the source, and maybe reserve achunk for you (it's not one of these flashy client-server setups). It assumethe usual GNU compiler toolchain, so any linux distro or similar would beideal. (Gentoo - get everything optimised for your system?)

Some chess engines represent the chessboard using "bitboards". A bitboard is where you use every bit in a 64-bit unsigned int to represent the state of a square on the board. To represent the whole board you use multiple bitboards... for example:

I think someone noted that you store a new array for each type of piece, and an 8*8 board, @ 1 bit per position is 64 bits. I don't quite understand it myself. I suppose you would have each 8x8 board assume the piece is in the middle of the board and show all the possible moves from THAT position, and just move it around the board to see what is possible. ie, the queen's matrix would look sort of like an asterik (an 8 starred one) originating from the middle of the board, and if the queen is in a corner, yo