[MPI] MPI auto-detection failed: unknown wrapper compiler...

Hello
I'm trying to install boost and its MPI bindings on a Cray XT5 and this
is what I get after adding using mpi ; to user-config.jam:
MPI auto-detection failed: unknown wrapper compiler
/opt/cray/xt-asyncpe/3.3/bin/CC
or
MPI auto-detection failed: unknown wrapper compiler mpic++
(mpic++
-bash: mpic++: command not found)
If I understand correctly boost only checks for mpicc and related
executables and also tries mpirun. None of these are supposed to be used
on an XT5. The compiler commands to use are cc, CC and ftn. More
information for I think the same machine:
http://www.csc.fi/english/pages/louhi_guide/program_development/compilers/in...
This is how I'd run the test program from boost homepage
Compile:
cat > mpitesti.cpp << EOF
#include

Hi Ilja, On Apr 12, 2010, at 12:14 AM, Ilja Honkonen wrote:
I'm trying to install boost and its MPI bindings on a Cray XT5 and this is what I get after adding using mpi ; to user-config.jam: MPI auto-detection failed: unknown wrapper compiler /opt/cray/xt-asyncpe/3.3/bin/CC or MPI auto-detection failed: unknown wrapper compiler mpic++
It takes a fair bit of work to get XT working with Boost.Build. Here's a few pointers. In our user-config.jam we have this description. using pgi : 10.1.xt : CC cc ftn : <cflags>"-Utflops -B -Knoieee -Mnosecond_underscore" <cxxflags>"-DMPICH_IGNORE_CXX_SEEK -Utflops -Knoieee - Mnosecond_underscore" <find-shared-library>"std -lm -ldl" <find-static-library>"pgf90 -lpgf90_rpm1 -lpgf902 -lpgf90rtl - lpgftnrtl" ; Notice that we pass the Fortran, C and C++ compilers down into the Pgi toolset initialization function. I've also attached our pgi.jam so you can see how we process the various toolset compilers. Notice that you'll need to make some modifications to mpi.jam to handle the XT style MPI compiler wrappers. Here's a block we added to mpi.jam to do this for XT. else if [ safe-shell-command "$(command) -target=linux -show - c" ] && ! [ safe-shell-command "$(command) -compile_info" ] { if $(.debug-configuration) { ECHO "Found Pgi XT MPI wrapper compiler: $(command)" ; } compile_flags = [ SHELL "env PATH=`pwd`/boost/tools/build/v2/ tools:$PATH $(command) -c" ] ; compile_flags = [ strip-eol $(compile_flags) ] ; link_flags = [ SHELL "env PATH=`pwd`/boost/tools/build/v2/tools: $PATH $(command) -show " ] ; # remove -show from the compile and link flags, if present front_dashc = [ MATCH "(.*)-show " : $(link_flags) ] ; if $(front_dashc) { back_dashc = [ MATCH " -show(.*)" : $(link_flags) ] ; link_flags = "$(back_dashc)" ; } } Also note that we had to add a new architecture (cray) and target (catamount) and a few other modifications to get things going but I can't recall them all at the moment. We have to invoke bjam with: architecture=cray target=catamount instruction-set=opteron pgi-10.1.xt Hope that helps! -- Noel

On 12 Apr 2010, at 08:14, Ilja Honkonen wrote:
Hello
I'm trying to install boost and its MPI bindings on a Cray XT5 and this is what I get after adding using mpi ; to user-config.jam: MPI auto-detection failed: unknown wrapper compiler /opt/cray/xt-asyncpe/3.3/bin/CC or MPI auto-detection failed: unknown wrapper compiler mpic++
(mpic++ -bash: mpic++: command not found)
If I understand correctly boost only checks for mpicc and related executables and also tries mpirun. None of these are supposed to be used on an XT5. The compiler commands to use are cc, CC and ftn. More information for I think the same machine: http://www.csc.fi/english/pages/louhi_guide/program_development/compilers/in...
This is how I'd run the test program from boost homepage Compile: cat > mpitesti.cpp << EOF #include
#include <iostream> int main(int argc, char* argv[]) { MPI_Init(&argc, &argv);
int rank; MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (rank == 0) { int value = 17; int result = MPI_Send(&value, 1, MPI_INT, 1, 0, MPI_COMM_WORLD); if (result == MPI_SUCCESS) std::cout << "Rank 0 OK!" << std::endl; } else if (rank == 1) { int value; int result = MPI_Recv(&value, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); if (result == MPI_SUCCESS && value == 17) std::cout << "Rank 1 OK!" << std::endl; } MPI_Finalize(); return 0; } EOF
CC mpitesti.cpp -o mpitesti /opt/cray/xt-asyncpe/3.3/bin/CC: INFO: linux target is being used
Then submit a job: cat > mpitesti.job << EOF #!/bin/sh #PBS -N mpitesti #PBS -l mppwidth=2 #PBS -l mppnppn=1 #PBS -j oe #PBS -l walltime=00:00:10 cd \$PBS_O_WORKDIR aprun -n 2 -N 1 -cc cpu ./mpitesti EOF
qsub mpitesti.job 58665.sdb
And after a few seconds: cat mpitesti.o58661 Rank 0 OK! Rank 1 OK! Application 125625 resources: utime 0, stime 0
Actually CC can be one of four different compilers depending on which PrgEnv module I've chosen:
CC -V /opt/cray/xt-asyncpe/3.3/bin/CC: INFO: native target is being used
pgCC 9.0-4 64-bit target on x86-64 Linux -tp k8-64e Copyright 1989-2000, The Portland Group, Inc. All Rights Reserved. Copyright 2000-2009, STMicroelectronics, Inc. All Rights Reserved.
module switch PrgEnv-pgi PrgEnv-gnu
CC --version /opt/cray/xt-asyncpe/3.3/bin/CC: INFO: linux target is being used g++ (GCC) 4.3.3 20090124 (rpm:2) Copyright (C) 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
etc.
I'd also like to use CC (and not necessarily g++) for compiling boost and not just its mpi bindings, how can I make bjam do that? Any other information you might need?
Hi Ilja, We did not bother with Boost.Build but build Boost and Boost.MPI using our own CMake build files on an XT5. Matthias
participants (3)
-
Belcourt, Kenneth
-
Ilja Honkonen
-
Matthias Troyer