[gmx-users] New force fields

Erik Lindahl lindahl at stanford.edu
Sat May 4 01:15:36 CEST 2002


>A solution could be to implement the inner loops with assembly embedded
>in C. At least they would be much more readable.
Yes, if that worked it would be nice, but unfortunately the gcc inlining 
syntax isn't
fully supported by the Intel compiler, it isn't supported at all by the 
Portland or other
third-party compilers on linux, and it's not supported with the Visual 
C++ compilers
in windows, so it would break a lot of architectures...

If it was possible I would definitely had preferred it, since the gnu 
assembler is really
lousy when it comes to catching compile-time errors. This is also the 
reason for the
very low amount of comments; the different assemblers refused to accept 
each others
comment formats....

Further, even with assembly-embedded-in-C the loops would have to be 
100% assembly
instructions, or the register allocator & instruction scheduler would 
fsck thing up. This
is actually the main reason Altivec (where we essentially use asm 
embedded in C) is
significantly slower than SSE.

It would also have been nice if we could write just the innermost part 
of the loop in assembly,
but the way gcc and current CPUs work it would involve an SSE/normal fp 
context switch at
every iteration, and that would kill performance.



More information about the gromacs.org_gmx-users mailing list