I would like to report the following information regarding compiling OpenMPI on 
Debian ARMv6. I won't submit this as a patch because I don't believe that 
"delete all 'dmb' instructions" can be considered a well developed patch. But 
this information may be of use to someone down the line.

I was able to compile the upstream openmpi-1.5.4 distribution on a Debian6 
armv6l qemu emulation.
http://www.open-mpi.org/software/ompi/v1.4/downloads/openmpi-1.4.5.tar.bz2


You have to make 3 changes to the package
 1) Delete all references to the RISC instruction 'dmb'
 2) Modify the 'configure' file to include an 'armv6' option
 3) Compile with CFLAGS=-march=armv6 

## 1) make the following edits to these three files
./opal/asm/generated/atomic-local.s
    delete all dmb instructions
./opal/asm/base/ARM.asm
    delete all dmb instructions
./opal/include/opal/sys/arm/atomic.h
    change the lines:
#if OPAL_WANT_SMP_LOCKS
#define MB()  __asm__ __volatile__ ("dmb" : : : "memory")
#define RMB() __asm__ __volatile__ ("dmb" : : : "memory")
#define WMB() __asm__ __volatile__ ("dmb" : : : "memory")
#else
#define MB()
#define RMB()
#define WMB()
#endif

to read:
#define MB()
#define RMB()
#define WMB()

## 2) add the following to the 'configure' file at line 26946 of 171183
goto line 26946, there should be an 'alpha-' section above and an 'armv7' below
insert the following
        armv6*)
            ompi_cv_asm_arch="ARM"
            OPAL_ASM_SUPPORT_64BIT=0
            OMPI_GCC_INLINE_ASSIGN='"mov %0, #0" : "=&r"(ret)'
            ;;

## 3) compile and install with the following CFLAGS
CFLAGS=-march=armv6
./configure CFLAGS=-march=armv6
make
sudo make install

more information about my build at
http://rhinohide.wordpress.com/2012/02/26/openmpi-on-raspberry-pi/ 


Reply via email to