That script is actually what I based my build on, and from what I can tell it is working fine for the most part. However, what is not working are the HDF5 output functions in MPI mode and using python-meep. If you use OpenMPI, the program will continue to run forever because it can't write to the files. The processes are blocking each other. OpenMPI doesn't tell you that, MPICH however does.
This does not seem to be problem with Meep, but with python-meep. I wrote a small *.ctl script to test the output functions and they work. Somehow python-meep is using the wrong hdf5 libraries (the ones that don't have mpi enabled), if that is even possible. I thought it was "just" a frontend for meep. Installing Meep from the repositories on Debian Jessie was the first thing I did, then I compiled python-meep against those and got the it running. Non-MPI worked flawless. MPI-Mode worked, but without the hdf5 functions. Then I tried to compile everything myself, because I could not find any answers on the matter, and that is when I encountered my original problem with "./configure" not finding HDF5 libraries either. On Sun, 2015-03-22 at 22:17 +0100, Filip Dominec wrote: > Hi, I would traditionally refer you to the blue-boxed compilation > procedure at http://f.dominec.eu/meep/index.html#install > > I tested it on different Ubuntu/Debian machines. Does it work on your system? > > Filip > > 2015-03-22 3:07 GMT+01:00, c7...@gmx.net <c7...@gmx.net>: > > Unfortunately that didn't work, but it definitely has something to do with > > the MPI. I just compiled all packages without it and MEEP finds the > > libraries. > > Something is preventing meep from finding the HDF5 packages when it is > > compiled with mpi-support. > > > > Greetings > > c7420 > > > > Gesendet: Sonntag, 22. März 2015 um 00:34 Uhr > > Von: "Pavel Ivanov" <pavel.ivanov.2...@googlemail.com> > > An: c7...@gmx.net > > Betreff: Re: [Meep-discuss] Meep can't find HDF5 libraries during > > ./configure > > Dear C7420, > > > > Try configuring and building all packages (not just HDF5 library) by forcing > > building scripts into using MPI versions of compilers. Here is an example > > from my notes: > > CC=mpicc CXX=mpicxx F77=mpif77 ./configure --prefix=/home/el1pi/opt > > --enable-parallel > > make > > make install > > > > Sometimes, it helps. Hopefully, it will help this time. > > > > best wishes > > pavlo > > > > > > > > On 21/03/15 20:35, c7...@gmx.net wrote: > >> > >> Dear Meep-Users, > >> I am failing to compile meep with MPICH and HDF5. I successfully build > >> mpich-3.1.4 and hdf5-1.8.9.tar from source on a Debian Jessie machine. > >> (Yes, I tried the precompiled packages too. They throw out errors when > >> trying to write to the hdf5 files in mpi-mode.) > >> The following problem may not have anything to do with the repository > >> packages not working properly, but I tried to compile the programs myself > >> anyway and all of the dependencies compile without errors. Only Meep can't > >> find the HDF5 libraries in the custom location. > >> > >> This is the bash function I used to compile HDF5: > >> function HDF5 { > >> tar -xf hdf5-1.8.14.tar > >> cd ./hdf5-1.8.14 > >> export CC="$BUILD_DIR/bin/mpicc" > >> export F77="$BUILD_DIR/bin/mpif77" > >> export CXX="$BUILD_DIR/bin/mpic++" > >> ./configure --prefix=$BUILD_DIR --enable-parallel 2>&1 | tee > >> ../Output/HDF5_configure.out > >> make 2>&1 | tee ../Output/HDF5_make.out > >> make check 2>&1 | tee ../Output/HDF5_make_check.out > >> make install 2>&1 | tee ../Output/HDF5_make_install.out > >> cd .. > >> rm -r -f ./hdf5-1.8.14 > >> export CC="gcc" > >> export F77="f77" > >> export CXX="g++" > >> } > >> > >> > >> After Installing libctl, MPICH and HarmInv+OpenBLAS I tried: > >> > >> export CFLAGS=" -fPIC"; export CXXFLAGS=" -fPIC"; export FFLAGS=" -fPIC" > >> export CC="gcc"; export F77="f77"; export CXX="g++" > >> export CPPFLAGS="-I$BUILD_DIR/include" > >> export LDFLAGS="-L$BUILD_DIR/lib" > >> export LD_RUN_PATH="-L$BUILD_DIR/lib" > >> export PATH="$BUILD_DIR/bin:$PATH" > >> > >> function MEEP { > >> tar -xf meep-1.2.1.tar.gz > >> cd ./meep-1.2.1 > >> export MPICXX="$BUILD_DIR/bin/mpic++" > >> ./configure --with-mpi --prefix=$BUILD_DIR > >> --with-libctl="$BUILD_DIR/share/libctl" 2>&1 | tee > >> ../Output/MEEP_configure.out > >> #make 2>&1 | tee ../Output/MEEP_make.out > >> #make install 2>&1 | tee ../Output/MEEP_make_install.out > >> cd .. > >> rm -rf ./meep-1.2.1 > >> } > >> > >> > >> BELOW is the Output of the ./configure command from the function above. > >> > >> checking for a BSD-compatible install... /usr/bin/install -c > >> checking whether build environment is sane... yes > >> checking for a thread-safe mkdir -p... /bin/mkdir -p > >> checking for gawk... gawk > >> checking whether make sets $(MAKE)... yes > >> checking whether make supports nested variables... yes > >> checking whether make supports nested variables... (cached) yes > >> checking whether to enable maintainer-specific portions of Makefiles... no > >> checking whether the C++ compiler works... yes > >> checking for C++ compiler default output file name... a.out > >> checking for suffix of executables... > >> checking whether we are cross compiling... no > >> checking for suffix of object files... o > >> checking whether we are using the GNU C++ compiler... yes > >> checking whether g++ accepts -g... yes > >> checking for style of include used by make... GNU > >> checking dependency style of g++... gcc3 > >> checking for mpic++... /home/neutronst4r/Install/build/bin/mpic++ > >> checking for mpi.h... yes > >> checking for extra flag needed to combine stdio.h and mpi.h... none > >> checking build system type... x86_64-unknown-linux-gnu > >> checking host system type... x86_64-unknown-linux-gnu > >> checking for gcc... gcc > >> checking whether we are using the GNU C compiler... yes > >> checking whether gcc accepts -g... yes > >> checking for gcc option to accept ISO C89... none needed > >> checking whether gcc understands -c and -o together... yes > >> checking dependency style of gcc... gcc3 > >> checking for C++ compiler vendor... gnu > >> checking how to print strings... printf > >> checking for a sed that does not truncate output... /bin/sed > >> checking for grep that handles long lines and -e... /bin/grep > >> checking for egrep... /bin/grep -E > >> checking for fgrep... /bin/grep -F > >> checking for ld used by gcc... /usr/bin/ld > >> checking if the linker (/usr/bin/ld) is GNU ld... yes > >> checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B > >> checking the name lister (/usr/bin/nm -B) interface... BSD nm > >> checking whether ln -s works... yes > >> checking the maximum length of command line arguments... 1572864 > >> checking whether the shell understands some XSI constructs... yes > >> checking whether the shell understands "+="... yes > >> checking how to convert x86_64-unknown-linux-gnu file names to > >> x86_64-unknown-linux-gnu format... func_convert_file_noop > >> checking how to convert x86_64-unknown-linux-gnu file names to toolchain > >> format... func_convert_file_noop > >> checking for /usr/bin/ld option to reload object files... -r > >> checking for objdump... objdump > >> checking how to recognize dependent libraries... pass_all > >> checking for dlltool... no > >> checking how to associate runtime and link libraries... printf %s\n > >> checking for ar... ar > >> checking for archiver @FILE support... @ > >> checking for strip... strip > >> checking for ranlib... ranlib > >> checking command to parse /usr/bin/nm -B output from gcc object... ok > >> checking for sysroot... no > >> checking for mt... mt > >> checking if mt is a manifest tool... no > >> checking how to run the C preprocessor... gcc -E > >> checking for ANSI C header files... yes > >> checking for sys/types.h... yes > >> checking for sys/stat.h... yes > >> checking for stdlib.h... yes > >> checking for string.h... yes > >> checking for memory.h... yes > >> checking for strings.h... yes > >> checking for inttypes.h... yes > >> checking for stdint.h... yes > >> checking for unistd.h... yes > >> checking for dlfcn.h... yes > >> checking for objdir... .libs > >> checking if gcc supports -fno-rtti -fno-exceptions... no > >> checking for gcc option to produce PIC... -fPIC -DPIC > >> checking if gcc PIC flag -fPIC -DPIC works... yes > >> checking if gcc static flag -static works... yes > >> checking if gcc supports -c -o file.o... yes > >> checking if gcc supports -c -o file.o... (cached) yes > >> checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports > >> shared libraries... yes > >> checking dynamic linker characteristics... GNU/Linux ld.so > >> checking how to hardcode library paths into programs... immediate > >> checking whether stripping libraries is possible... yes > >> checking if libtool supports shared libraries... yes > >> checking whether to build shared libraries... no > >> checking whether to build static libraries... yes > >> checking how to run the C++ preprocessor... > >> /home/neutronst4r/Install/build/bin/mpic++ -E > >> checking for ld used by /home/neutronst4r/Install/build/bin/mpic++... > >> /usr/bin/ld -m elf_x86_64 > >> checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes > >> checking whether the /home/neutronst4r/Install/build/bin/mpic++ linker > >> (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes > >> checking for /home/neutronst4r/Install/build/bin/mpic++ option to produce > >> PIC... -fPIC -DPIC > >> checking if /home/neutronst4r/Install/build/bin/mpic++ PIC flag -fPIC > >> -DPIC works... yes > >> checking if /home/neutronst4r/Install/build/bin/mpic++ static flag -static > >> works... yes > >> checking if /home/neutronst4r/Install/build/bin/mpic++ supports -c -o > >> file.o... yes > >> checking if /home/neutronst4r/Install/build/bin/mpic++ supports -c -o > >> file.o... (cached) yes > >> checking whether the /home/neutronst4r/Install/build/bin/mpic++ linker > >> (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes > >> checking dynamic linker characteristics... (cached) GNU/Linux ld.so > >> checking how to hardcode library paths into programs... immediate > >> checking for latex2html... no > >> configure: WARNING: Cannot find latex2html in your path! > >> checking for sin in -lm... yes > >> checking for fftw_plan_dft_1d in -lfftw3... yes > >> checking whether we are using the GNU Fortran 77 compiler... yes > >> checking whether f77 accepts -g... yes > >> checking whether we are using the GNU Fortran 77 compiler... (cached) yes > >> checking whether f77 accepts -g... (cached) yes > >> checking if libtool supports shared libraries... yes > >> checking whether to build shared libraries... no > >> checking whether to build static libraries... yes > >> checking for f77 option to produce PIC... -fPIC > >> checking if f77 PIC flag -fPIC works... yes > >> checking if f77 static flag -static works... yes > >> checking if f77 supports -c -o file.o... yes > >> checking if f77 supports -c -o file.o... (cached) yes > >> checking whether the f77 linker (/usr/bin/ld -m elf_x86_64) supports > >> shared libraries... yes > >> checking dynamic linker characteristics... (cached) GNU/Linux ld.so > >> checking how to hardcode library paths into programs... immediate > >> checking how to get verbose linking output from f77... -v > >> checking for Fortran 77 libraries of f77... > >> -L/home/neutronst4r/Install/build/lib -L/usr/lib/gcc/x86_64-linux-gnu/4.9 > >> -L/usr/lib/gcc/x86_64-linux-gnu/4.9/../../../x86_64-linux-gnu > >> -L/usr/lib/gcc/x86_64-linux-gnu/4.9/../../../../lib > >> -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu > >> -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.9/../../.. -lfftw3 > >> -lgfortran -lm -lquadmath > >> checking for dummy main to link with Fortran 77 libraries... none > >> checking for Fortran 77 name-mangling scheme... lower case, underscore, no > >> extra underscore > >> checking for sgemm_... no > >> checking for ATL_xerbla in -latlas... yes > >> checking for sgemm_ in -lf77blas... yes > >> checking for cblas_dgemm in -lcblas... yes > >> checking for cheev_... no > >> checking for cheev_ in -llapack... yes > >> checking for pkg-config... /usr/bin/pkg-config > >> checking for harminv >= 1.1... yes > >> checking HARMINV_CFLAGS... > >> checking HARMINV_LIBS... -lharminv > >> checking mpb.h usability... no > >> checking mpb.h presence... no > >> checking for mpb.h... no > >> checking for cblas_cgemm... yes > >> checking for gsl_sf_bessel_Jn in -lgsl... yes > >> checking for deflate in -lz... yes > >> checking for H5Pcreate in -lhdf5... no > >> configure: WARNING: Couldn't find the HDF5 library!! Switching to > >> --without-hdf5. > >> checking for H5Pset_mpi... no > >> checking for H5Pset_fapl_mpio... no > >> checking for mpirun... mpirun > >> checking for guile-config... guile-config > >> checking if linking to guile works... yes > >> checking libguile.h usability... yes > >> checking libguile.h presence... yes > >> checking for libguile.h... yes > >> checking guile/gh.h usability... no > >> checking guile/gh.h presence... no > >> checking for guile/gh.h... no > >> checking for scm_make_smob_type... yes > >> checking for SCM_SMOB_PREDICATE... no > >> checking for SCM_SMOB_DATA... no > >> checking for SCM_NEWSMOB... no > >> checking how to activate readline in Guile... ice-9 readline > >> checking for libctl dir... /home/neutronst4r/Install/build/share/libctl > >> checking for gen-ctl-io... gen-ctl-io > >> checking for ctl_get_vector3 in -lctl... yes > >> checking ctl.h usability... yes > >> checking ctl.h presence... yes > >> checking for ctl.h... yes > >> checking whether libctl version is at least 3.2.0... ok > >> checking for libctl_quiet feature... yes > >> checking for basename in -lgen... no > >> checking for feenableexcept... yes > >> checking whether feenableexcept declaration is usable... yes > >> checking whether to catch and ignore SIGFPE signals... no > >> checking whether time.h and sys/time.h may both be included... yes > >> checking sys/time.h usability... yes > >> checking sys/time.h presence... yes > >> checking for sys/time.h... yes > >> checking for BSDgettimeofday... no > >> checking for gettimeofday... yes > >> checking for cblas_ddot... yes > >> checking for cblas_daxpy... yes > >> checking for jn... yes > >> checking for C/C++ restrict keyword... __restrict > >> checking that generated files are newer than configure... done > >> configure: creating ./config.status > >> config.status: creating Makefile > >> config.status: creating meep-pkgconfig > >> config.status: creating src/Makefile > >> config.status: creating tests/Makefile > >> config.status: creating examples/Makefile > >> config.status: creating libctl/Makefile > >> config.status: creating libctl/meep.scm > >> config.status: creating config.h > >> config.status: executing depfiles commands > >> config.status: executing libtool commands > >> > >> > >> > >> If anyone could help me out on this one, I would be very grateful. > >> > >> Greetings > >> c7420 > >> > >> > >> > >> _______________________________________________ > >> meep-discuss mailing list > >> meep-discuss@ab-initio.mit.edu > >> http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss _______________________________________________ meep-discuss mailing list meep-discuss@ab-initio.mit.edu http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss