Latest PGI 9.0-4 Mac OS X SnowLeopard and openmpi-1.3.3

Hi,

I’m currently playing with the latest PGI for Mac OS X and it seems that
I’m unable to compile openmpi-1.3.3 I have tried with two different configs and both are giving the same error message :

  • Config A: GNU and PGI
    export CC=“gcc-4.2”
    export CXX=“g+±4.2”
    export CPP=“cpp-4.2 "
    export CFLAGS=”-m64"
    export CXXFLAGS=“-m64”
    export CPPFLAGS=“-m64”
    export F77=pgf77
    export F90=pgf95
    ./configure --prefix=/opt/openmpi-1.3.3

  • Config B: PGI only
    ./configure CC=pgcc CXX=pgcpp F77=pgf77 F90=pgf95 --prefix=/opt/openmpi-1.3.3

Both are giving a very similar error message, where for config A I have something like:

libtool: link: gcc-4.2 -O3 -DNDEBUG -m64 -finline-functions -fno-strict-aliasing -fvisibility=hidden -o orte-iof orte-iof.o …/…/…/orte/.libs/libopen-rte.a /Users/podallaire/Downloads/openmpi-1.3.3/opal/.libs/libopen-pal.a -lutil
Undefined symbols:
“_orte_iof”, referenced from:
_main in orte-iof.o
_abort_exit_callback in orte-iof.o
“_orte_routed”, referenced from:
_orte_read_hnp_contact_file in libopen-rte.a(hnp_contact.o)
_orte_rml_base_update_contact_info in libopen-rte.a(rml_base_contact.o)
_orte_rml_base_update_contact_info in libopen-rte.a(rml_base_contact.o)
ld: symbol(s) not found
collect2: ld returned 1 exit status
make[2]: *** [orte-iof] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all-recursive] Error 1

Config B:

libtool: link: pgcc -O -DNDEBUG -o orte-iof orte-iof.o …/…/…/orte/.libs/libopen-rte.a /Users/podallaire/Downloads/openmpi-1.3.3/opal/.libs/libopen-pal.a -lutil
Undefined symbols:
“_orte_iof”, referenced from:
_main in orte-iof.o
_abort_exit_callback in orte-iof.o
“_orte_routed”, referenced from:
_orte_read_hnp_contact_file in libopen-rte.a(hnp_contact.o)
_orte_rml_base_update_contact_info in libopen-rte.a(rml_base_contact.o)
_orte_rml_base_update_contact_info in libopen-rte.a(rml_base_contact.o)
ld: symbol(s) not found
make[2]: *** [orte-iof] Error 2
make[1]: *** [all-recursive] Error 1
make: *** [all-recursive] Error 1



Any idea how to avoid that ?

Regards,

PO

Hi PO,

After a bit of investigation, it appears to be a problem with OpenMPI and gcc so you may want to contact OpenMPI directly. We were able to work around the problem by adding “-all_load” to link line. Though, this may or may not be the correct solution.

For example:

% cd /Users/johndoe/openmpi-1.3.3/orte/tools/orte-iof/
% gcc -O3 -DNDEBUG -finline-functions -fno-strict-aliasing -fvisibility=hidden -o ./libs/orte-iof orte-iof.o ../../../orte/.libs/libopen-rte.a /Users/johndoe/openmpi-1.3.3/opal/.libs/libopen-pal.a -lutil -all_load

Hope this helps,
Mat

Thank you very much, it works !

I just posted the bug to the openmpi mailing list.

Best regards,

PO