[gmx-developers] Gromacs 3.2.1 PPC Altivec patch
Kyle Ellrott
kellrott at csbl.bmb.uga.edu
Fri Oct 8 19:31:52 CEST 2004
The following is a patch that should allow gromacs-3.2.1 to compile
with altivec support on a Linux based PPC system.
There are a couple difference between 'main-line' gcc and apple gcc.
First, altivec support is enabled with a '-maltivec' rather then a
'-faltivec'. Next, you need to include a altivec.h header file (which
doesn't exist in current apple gcc), finally Some versions of mainline
gcc putz with the definition of bool (changes it to _bool) to get the
vector bool definition that's available in apple gcc. This of course
conflicts with types/simple.h definition of bool.
The following patch compiles successfully with gcc 3.4.2 and gcc from
MacOSX 10.3. It fails to compile on standard Redhat AS 3 update 3 for
PPC (because of bug noted at
http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=134368 )
It has been tested on IBM JS20 (Redhat AS 3 update 3), and an Apple G5
with MacOSX 10.3.5. It has only been tested for compilation and
runtime correctness. I haven't tested scientific accuracy ;-)
Kyle
diff -r gromacs-3.2.1/acinclude.m4 gromacs-3.2.1.mine/acinclude.m4
805c805,806
< ACX_CHECK_CC_FLAGS(-faltivec,faltivec,xCFLAGS="$xCFLAGS
-faltivec"))
---
> ACX_CHECK_CC_FLAGS(-faltivec,faltivec,xCFLAGS="$xCFLAGS
-faltivec",
>
ACX_CHECK_CC_FLAGS(-maltivec,maltivec,xCFLAGS="$xCFLAGS -maltivec",)))
diff -r gromacs-3.2.1/configure.ac gromacs-3.2.1.mine/configure.ac
332c332
< #ifndef __VEC__
---
> #if !defined(__VEC__) || !defined(__ALTIVEC__)
339c339,347
< AC_MSG_RESULT([no])
---
> AC_TRY_COMPILE([#include <altivec.h>],[
> #if !defined(__VEC__) || !defined(__ALTIVEC__)
> choke_me
> #endif
> ],[
> AC_MSG_RESULT([yes])
> GMXLIB_LIBOBJS="${GMXLIB_LIBOBJS} inner_altivec.lo"
> AC_DEFINE([USE_PPC_ALTIVEC],,[Use PowerPC Altivec inner loops])],[
> AC_MSG_RESULT([no])
343a352,353
> ]
> )
diff -r gromacs-3.2.1/include/ppc_altivec.h
gromacs-3.2.1.mine/include/ppc_altivec.h
42a43,53
> #if !defined(__APPLE_ALTIVEC__)
> #if !defined(__ALTIVEC__) || !defined(__APPLE__)
> #include <altivec.h>
> #ifdef bool //some versions of GCC putz with bool to be compatible
with the apple vector bool
> #undef bool //this of course conflicts with Gromac's definition in
types/simple.h
> #define bool int
> #endif
> #endif
> #endif
>
>
More information about the gromacs.org_gmx-developers
mailing list