[OMPI users] Problems compiling 1.2.4 using Intel Compiler 10.1.006 on Leopard
I am running into some roadblocks in compiling OpenMPI 1.2.4 using the latest Intel Compilers (icc, icpc, ifort) version 10.1.006 on OS X Leopard (10.5.1). Using the last revision of the intel compilers (version 10.0.20) works, but I need the 10.1 compilers to fix compilation of the code I am trying to parallelize, so I need to get everything working with 10.1.x. If I issue my standard ./configure line: ./configure --prefix=/usr/local/openmpi --with-fortran --enable-shared --disable-static --with-xgrid None of the test c or c++ programs can be compiled, due to a locale error: Catastrophic error: could not set locale "" to allow processing of multibyte characters This is a problem that intel seems to know about, and they have suggested adding a -no-multibyte-chars flag to fix it. When I add the -no-multibyte-chars flag (via CFLAGS=-no-multibyte-chars CXXFLAGS=-no- multibyte-chars), the configure script runs successfully. However, when I then try to compile, I fail with the following when making asm: Making all in asm source='asm.c' object='asm.lo' libtool=yes \ DEPDIR=.deps depmode=none /bin/sh ../../config/depcomp \ /bin/sh ../../libtool --tag=CC --mode=compile /Users/mark/Desktop/ openmpi-1.2.4/config/compile icc -DHAVE_CONFIG_H -I. -I../../opal/ include -I../../orte/include -I../../ompi/include -I../.. - D_REENTRANT -O3 -DNDEBUG -no-multibyte-chars -finline-functions -fno- strict-aliasing -restrict -c -o asm.lo asm.c libtool: compile: /Users/mark/Desktop/openmpi-1.2.4/config/compile icc -DHAVE_CONFIG_H -I. -I../../opal/include -I../../orte/include - I../../ompi/include -I../.. -D_REENTRANT -O3 -DNDEBUG -no-multibyte- chars -finline-functions -fno-strict-aliasing -restrict -c asm.c -fno- common -DPIC -o .libs/asm.o rm -f atomic-asm.s ln -s "../../opal/asm/generated/atomic-local.s" atomic-asm.s /bin/sh ../../libtool --mode=compile /Users/mark/Desktop/ openmpi-1.2.4/config/compile icc -O3 -DNDEBUG -no-multibyte-chars - finline-functions -fno-strict-aliasing -restrict -c -o atomic-asm.lo atomic-asm.s libtool: compile: /Users/mark/Desktop/openmpi-1.2.4/config/compile icc -O3 -DNDEBUG -no-multibyte-chars -finline-functions -fno-strict- aliasing -restrict -c atomic-asm.s -fno-common -DPIC -o .libs/atomic- asm.o /bin/sh ../../libtool --tag=CC --mode=link /Users/mark/Desktop/ openmpi-1.2.4/config/compile icc -O3 -DNDEBUG -no-multibyte-chars - finline-functions -fno-strict-aliasing -restrict -export-dynamic - Wl,-u,_munmap -Wl,-multiply_defined,suppress -o libasm.la asm.lo atomic-asm.lo -lutil libtool: link: ar cru .libs/libasm.a .libs/asm.o .libs/atomic-asm.o ar: .libs/atomic-asm.o: No such file or directory make[2]: *** [libasm.la] Error 1 make[1]: *** [all-recursive] Error 1 make: *** [all-recursive] Error 1 Attached to this email are two tar/gzipped files. The first, "openMPI_config_fail.tgz" contains the config.log, and output from ./ configure, if I do not specify the -no-multibyte-chars option. The second, openMPI_make_fail.tgz, contains the config.log, ./configure output, and make output, if I do specify -no-multibyte-chars. Any feedback on how to solve this issue would be greatly appreciated. Thanks! -Mark openMPI_config_fail.tgz Description: Binary data openMPI_make_fail.tgz Description: Binary data
Re: [OMPI users] Problems compiling 1.2.4 using Intel Compiler 10.1.006 on Leopard
Thanks for the suggestion Jeff. Unfortunately, that didn't fix the issue. -Mark On Nov 21, 2007, at 7:55 AM, Jeff Squyres wrote: Can you try also adding CCASFLAGS=-no-multibyte-chars? On Nov 20, 2007, at 2:45 PM, Mark Dobossy wrote: I am running into some roadblocks in compiling OpenMPI 1.2.4 using the latest Intel Compilers (icc, icpc, ifort) version 10.1.006 on OS X Leopard (10.5.1). Using the last revision of the intel compilers (version 10.0.20) works, but I need the 10.1 compilers to fix compilation of the code I am trying to parallelize, so I need to get everything working with 10.1.x. If I issue my standard ./configure line: ./configure --prefix=/usr/local/openmpi --with-fortran --enable- shared --disable-static --with-xgrid None of the test c or c++ programs can be compiled, due to a locale error: Catastrophic error: could not set locale "" to allow processing of multibyte characters This is a problem that intel seems to know about, and they have suggested adding a -no-multibyte-chars flag to fix it. When I add the -no-multibyte-chars flag (via CFLAGS=-no-multibyte-chars CXXFLAGS=-no-multibyte-chars), the configure script runs successfully. However, when I then try to compile, I fail with the following when making asm: Making all in asm source='asm.c' object='asm.lo' libtool=yes \ DEPDIR=.deps depmode=none /bin/sh ../../config/depcomp \ /bin/sh ../../libtool --tag=CC --mode=compile /Users/mark/Desktop/ openmpi-1.2.4/config/compile icc -DHAVE_CONFIG_H -I. -I../../opal/ include -I../../orte/include -I../../ompi/include -I../.. - D_REENTRANT -O3 -DNDEBUG -no-multibyte-chars -finline-functions - fno-strict-aliasing -restrict -c -o asm.lo asm.c libtool: compile: /Users/mark/Desktop/openmpi-1.2.4/config/compile icc -DHAVE_CONFIG_H -I. -I../../opal/include -I../../orte/include - I../../ompi/include -I../.. -D_REENTRANT -O3 -DNDEBUG -no-multibyte- chars -finline-functions -fno-strict-aliasing -restrict -c asm.c - fno-common -DPIC -o .libs/asm.o rm -f atomic-asm.s ln -s "../../opal/asm/generated/atomic-local.s" atomic-asm.s /bin/sh ../../libtool --mode=compile /Users/mark/Desktop/ openmpi-1.2.4/config/compile icc -O3 -DNDEBUG -no-multibyte-chars - finline-functions -fno-strict-aliasing -restrict -c -o atomic-asm.lo atomic-asm.s libtool: compile: /Users/mark/Desktop/openmpi-1.2.4/config/compile icc -O3 -DNDEBUG -no-multibyte-chars -finline-functions -fno-strict- aliasing -restrict -c atomic-asm.s -fno-common -DPIC -o .libs/ atomic-asm.o /bin/sh ../../libtool --tag=CC --mode=link /Users/mark/Desktop/ openmpi-1.2.4/config/compile icc -O3 -DNDEBUG -no-multibyte-chars - finline-functions -fno-strict-aliasing -restrict -export-dynamic -Wl,-u,_munmap -Wl,-multiply_defined,suppress -o libasm.la asm.lo atomic-asm.lo -lutil libtool: link: ar cru .libs/libasm.a .libs/asm.o .libs/atomic-asm.o ar: .libs/atomic-asm.o: No such file or directory make[2]: *** [libasm.la] Error 1 make[1]: *** [all-recursive] Error 1 make: *** [all-recursive] Error 1 Attached to this email are two tar/gzipped files. The first, "openMPI_config_fail.tgz" contains the config.log, and output from ./ configure, if I do not specify the -no-multibyte-chars option. The second, openMPI_make_fail.tgz, contains the config.log, ./configure output, and make output, if I do specify -no-multibyte-chars. Any feedback on how to solve this issue would be greatly appreciated. Thanks! -Mark -- Jeff Squyres Cisco Systems ___ users mailing list us...@open-mpi.org http://www.open-mpi.org/mailman/listinfo.cgi/users
[OMPI users] Outputting rank and size for all outputs.
Lately I have been doing a great deal of MPI debugging. I have, on an occasion or two, fallen into the trap of "Well, that error MUST be coming from rank X. There is no way it could be coming from any other rank..." Then proceeding to debug what's happening at rank X, only to find out a few frustrating hours later that rank Y is throwing the output (I'm sure no one else out there has fallen into this trap). It was at that point, I decided to write up some code to automatically (sort of) output the rank and size of my domain with every output. I write mostly in C++, and this is what I came up with: #include #include std::ostream &mpi_info(std::ostream &s) { int rank, size; rank = MPI::COMM_WORLD.Get_rank(); size = MPI::COMM_WORLD.Get_size(); s << "[rk:" << rank << ",sz:" << size << "]: "; return s; } Then in my code, I have changed: std::cerr << "blah" << std::endl; to: std::cerr << mpi_info << "blah" << std::endl; (or cout, or file stream, etc...) where "blah" is some amazingly informative error message. Are there other ways people do this? Simpler ways perhaps? -Mark
Re: [OMPI users] Outputting rank and size for all outputs.
That sounds great Ralph! Do you have any more details about how the process rank would be added? And thanks for the other suggestions from Ashley and Galen. Both methods look like they would work great, and are probably a little nicer than my current setup. -Mark On Jul 11, 2008, at 9:46 AM, Ralph H Castain wrote: Adding the ability to tag stdout/err with the process rank is fairly simple. We are going to talk about this next week at a design meeting - we have several different tagging schemes that people have requested, so we want to define a way to meet them all that doesn't create too much ugliness in the code. Will get back to you on this one. Regardless, the earliest version it could show up in would be 1.3 (which is a tight question given current release plans). On 6/24/08 9:36 AM, "Ashley Pittman" thinking.com> wrote: If you are using the openmpi mpirun then you can put the following in a wrapper script which will prefix stdout in a manner similar to what you appear to want. Simply add the wrapper script before the name of your application. Is this the kind of thing you were aiming for? I'm quite surprised mpirun doesn't have an option for this actually, it's a fairly common thing to want. Ashley Pittman. #!/bin/sh $@ | sed "s/^/\[rk:$OMPI_MCA_ns_nds_vpid,sz: $OMPI_MCA_ns_nds_num_procs \]/" On Tue, 2008-06-24 at 11:06 -0400, Mark Dobossy wrote: Lately I have been doing a great deal of MPI debugging. I have, on an occasion or two, fallen into the trap of "Well, that error MUST be coming from rank X. There is no way it could be coming from any other rank..." Then proceeding to debug what's happening at rank X, only to find out a few frustrating hours later that rank Y is throwing the output (I'm sure no one else out there has fallen into this trap). It was at that point, I decided to write up some code to automatically (sort of) output the rank and size of my domain with every output. I write mostly in C++, and this is what I came up with: #include #include std::ostream &mpi_info(std::ostream &s) { int rank, size; rank = MPI::COMM_WORLD.Get_rank(); size = MPI::COMM_WORLD.Get_size(); s << "[rk:" << rank << ",sz:" << size << "]: "; return s; } Then in my code, I have changed: std::cerr << "blah" << std::endl; to: std::cerr << mpi_info << "blah" << std::endl; (or cout, or file stream, etc...) where "blah" is some amazingly informative error message. Are there other ways people do this? Simpler ways perhaps? -Mark ___ users mailing list us...@open-mpi.org http://www.open-mpi.org/mailman/listinfo.cgi/users ___ users mailing list us...@open-mpi.org http://www.open-mpi.org/mailman/listinfo.cgi/users ___ users mailing list us...@open-mpi.org http://www.open-mpi.org/mailman/listinfo.cgi/users