[gmx-users] Patch for AMD Athlon

Erik Lindahl lindahl at csb.stanford.edu
Mon Mar 1 17:23:00 CET 2004


Hi,

I have something you will like much better :-)

There is a very good reason why I've been holding 3.2.1 a couple of 
weeks extra, but I'll be releasing it tonight (in a couple of hours).

We eventually got in touch with engineers at AMD, and I've been working 
pretty close with them to debug the hardware. Together we have been 
able to locate the instruction sequence that causes hangs. This affects 
all recent AMD CPUs, including Athlon, AthlonXP, Athlon64 and Opteron.

Unfortunately I'm still under NDA on some of the details, but the good 
news is that I was able to change my assembly code and use a different 
sequence of instructions. You will not see any performance loss, and 
the results will by binary identical, but without the crashes.

Intel CPUs are not affected, but they too will use the newer code so I 
only have to maintain one version.

Anyway, this has been tested for 4 weeks, and we have not seen any 
crashes yet. Do let me know if you have any remaining Athlon problems 
with 3.2.1 - then we'll get back to AMD while we still have the 
hardware contact.

So, in summary: Starting with 3.2.1 I'd recommend SSE/SSE2 for amd 
again!

Cheers,

Erik




On Mar 1, 2004, at 4:42 PM, TAPO (Thomas Agersten Poulsen) wrote:

> Dear list,
>
> 	As many users, I have been experiencing unstability on my AMD
> Athlon MP Linux cluster. Jobs die randomly with errors like
> Fatal error: ci = -2147483648 should be in 0 .. 999 [FILE nsgrid.c, 
> LINE
> 218]
>
> Based on postings by Eric, I edited src/gmxlib/detectcpu.c to make 
> mdrun
> use 3DNow in stead for SSE.
> It has now been running perfectly for some time, and the speed penalty
> is null compared to jobs crashing.
> To help others, I post a diff of src/gmxlib/detectcpu.c against
> gromacs-3.2.
> One only needs to recompile mdrun_mpi (see ./configure --help to learn
> how to configure for mpi) by 'make mdrun'.
>
> Many thanks to Erik for his postings on how to do this. This posting is
> just meant as a help to less-experienced users (like myself), who think
> that editing the source-code is not everyday work.
>
> Best regards
> Thomas
>
> 313,319c313,316
> <
> <   /* Reorganize to check for 3DNOW fist
> <    */
> <   cpuflags=detect_3dnow(log);
> <   if(cpuflags & X86_3DNOW_SUPPORT) {
> <     fprintf(log,"CPU and OS support extended 3DNow.\n"
> < 	    "Using Gromacs 3DNow single precision assembly
> innerloops.\n\n");
> ---
>>   cpuflags=detect_sse(log);
>>   if(cpuflags & X86_SSE_SUPPORT) {
>>     fprintf(log,"CPU and OS support SSE.\n"
>> 	    "Using Gromacs SSE single precision assembly
> innerloops.\n\n");
> 322,325c319,327
> <     cpuflags=detect_sse(log);
> <     if(cpuflags & X86_SSE_SUPPORT) {
> <       fprintf(log,"CPU and OS support SSE.\n"
> < 	      "Using Gromacs SSE single precision assembly
> innerloops.\n\n");
> ---
>>     if(cpuflags & CPU_SSE_SUPPORT)
>>       fprintf(log,"Your processor supports SSE, but not your OS.\n"
>> 	      "Checking for Extended 3DNow support instead...\n");
>>     else /* No sse support at all */
>>       fprintf(log,"No SSE support in CPU. Trying Extended
> 3DNow...\n");
>>     cpuflags=detect_3dnow(log);
>>     if(cpuflags & X86_3DNOW_SUPPORT) {
>>       fprintf(log,"CPU and OS support extended 3DNow.\n"
>> 	      "Using Gromacs 3DNow single precision assembly
>> innerloops.\n\n");
> 327,328c329
> <     }
> <
> ---
>>     }
> 330,331d330
> <   /* End of edition */
> <
> _______________________________________________
> gmx-users mailing list
> gmx-users at gromacs.org
> http://www.gromacs.org/mailman/listinfo/gmx-users
> Please don't post (un)subscribe requests to the list. Use the
> www interface or send it to gmx-users-request at gromacs.org.




More information about the gromacs.org_gmx-users mailing list