Thanks Gilles. I will retest and follow up in the PR.
-Paul On Tue, May 24, 2016 at 11:56 PM, Gilles Gouaillardet <gil...@rist.or.jp> wrote: > Paul, > > > this works fine on RHEL7 but not on RHEL6 > > here is the relevant configure output > > < checking for library containing clock_gettime... -lrt > --- > > checking for library containing clock_gettime... none required > > > the reason is clock_gettime was moved from librt into libc between RHEL6 > and RHEL7 > > > i made a proof of concept at > https://github.com/open-mpi/ompi-release/pull/1191 i am still testing > > (it also fixes a typo in pthread_join invokation) > > > Cheers, > > > Gilles > > > > On 5/25/2016 2:15 PM, Paul Hargrove wrote: > > The following error did *not* occur on the same system with the previous > RC. > > I have configured 1.10.3rc3 on a normal x86-64/Linux system with: > --prefix=[...] --enable-debug --enable-static --disable-shared > > When I try to use the resulting build to compile the examples: > > $ make -k > mpicc -g hello_c.c -o hello_c > mpicc -g ring_c.c -o ring_c > mpicc -g connectivity_c.c -o connectivity_c > make[1]: Entering directory > `/scratch/phargrov/OMPI/openmpi-1.10.3rc3-linux-x86_64-static/BLD/examples' > make[2]: Entering directory > `/scratch/phargrov/OMPI/openmpi-1.10.3rc3-linux-x86_64-static/BLD/examples' > mpic++ -g hello_cxx.cc -o hello_cxx > mpic++ -g ring_cxx.cc -o ring_cxx > make[2]: Leaving directory > `/scratch/phargrov/OMPI/openmpi-1.10.3rc3-linux-x86_64-static/BLD/examples' > make[2]: Entering directory > `/scratch/phargrov/OMPI/openmpi-1.10.3rc3-linux-x86_64-static/BLD/examples' > mpifort -g hello_mpifh.f -o hello_mpifh > /scratch/phargrov/OMPI/openmpi-1.10.3rc3-linux-x86_64-static/INST/lib/libmpi.a(ompi_mpi_init.o): > In function `ompi_warn_fork': > ompi_mpi_init.c:(.text+0x282): undefined reference to `pthread_atfork' > /scratch/phargrov/OMPI/openmpi-1.10.3rc3-linux-x86_64-static/INST/lib/libopen-pal.a(lt1-malloc.o): > In function `ptmalloc_init': > malloc.c:(.text+0x5f3): undefined reference to `pthread_atfork' > collect2: error: ld returned 1 exit status > make[2]: *** [hello_mpifh] Error 1 > mpifort -g ring_mpifh.f -o ring_mpifh > /scratch/phargrov/OMPI/openmpi-1.10.3rc3-linux-x86_64-static/INST/lib/libmpi.a(ompi_mpi_init.o): > In function `ompi_warn_fork': > ompi_mpi_init.c:(.text+0x282): undefined reference to `pthread_atfork' > /scratch/phargrov/OMPI/openmpi-1.10.3rc3-linux-x86_64-static/INST/lib/libopen-pal.a(lt1-malloc.o): > In function `ptmalloc_init': > malloc.c:(.text+0x5f3): undefined reference to `pthread_atfork' > collect2: error: ld returned 1 exit status > make[2]: *** [ring_mpifh] Error 1 > make[2]: Leaving directory > `/scratch/phargrov/OMPI/openmpi-1.10.3rc3-linux-x86_64-static/BLD/examples' > make[1]: *** [mpi] Error 2 > make[1]: Leaving directory > `/scratch/phargrov/OMPI/openmpi-1.10.3rc3-linux-x86_64-static/BLD/examples' > make: *** [all] Error 2 > > Comparing the configure output from RC2 and RC3 is informative: > > checking if word-sized integers must be word-size aligned... no > checking if C compiler and POSIX threads work as is... no > checking if C++ compiler and POSIX threads work as is... no > -checking if Fortran compiler and POSIX threads work as is... no > +checking if Fortran compiler and POSIX threads work as is... yes > checking if C compiler and POSIX threads work with -Kthread... no > checking if C compiler and POSIX threads work with -kthread... no > checking if C compiler and POSIX threads work with -pthread... yes > checking if C++ compiler and POSIX threads work with -Kthread... no > checking if C++ compiler and POSIX threads work with -kthread... no > checking if C++ compiler and POSIX threads work with -pthread... yes > -checking if Fortran compiler and POSIX threads work with -Kthread... no > -checking if Fortran compiler and POSIX threads work with -kthread... no > -checking if Fortran compiler and POSIX threads work with -pthread... yes > checking for pthread_mutexattr_setpshared... yes > checking for pthread_condattr_setpshared... yes > checking for PTHREAD_MUTEX_ERRORCHECK_NP... yes > > > So, while RC2's configure determined that Fortran+pthreads needed > -pthread, it appears that RC3 has instead determined that Fortran+pthreads > "work as is". > > Here is the related portion of config.log from RC2: > > configure:63400: checking if Fortran compiler and POSIX threads work as is > configure:63481: gcc -std=gnu99 -g -finline-functions -fno-strict-aliasing > -I. -c conftest.c > conftest.c: In function 'pthreadtest_f': > conftest.c:27:5: warning: passing argument 1 of 'pthread_join' makes > integer from pointer without a cast > pthread_join(&newthread, 0); > ^ > In file included from conftest.c:3:0: > /usr/include/pthread.h:242:12: note: expected 'pthread_t' but argument is > of type 'pthread_t *' > extern int pthread_join (pthread_t __th, void **__thread_return); > ^ > configure:63488: $? = 0 > configure:63498: gfortran -g conftestf.f conftest.o -o conftest -lm -lutil > conftest.o: In function `pthreadtest_f': > conftest.c:(.text+0xa8): undefined reference to `__pthread_register_cancel' > conftest.c:(.text+0xc3): undefined reference to `pthread_create' > conftest.c:(.text+0xd5): undefined reference to `pthread_join' > conftest.c:(.text+0xe4): undefined reference to > `__pthread_unregister_cancel' > collect2: error: ld returned 1 exit status > configure:63505: $? = 1 > > > And here it is for RC3: > > configure:63623: checking if Fortran compiler and POSIX threads work as is > configure:63704: gcc -std=gnu99 -g -finline-functions -fno-strict-aliasing > -I. -c conftest.c > conftest.c: In function 'pthreadtest_f': > conftest.c:27:5: warning: passing argument 1 of 'pthread_join' makes > integer from pointer without a cast > pthread_join(&newthread, 0); > ^ > In file included from conftest.c:3:0: > /usr/include/pthread.h:242:12: note: expected 'pthread_t' but argument is > of type 'pthread_t *' > extern int pthread_join (pthread_t __th, void **__thread_return); > ^ > configure:63711: $? = 0 > configure:63721: gfortran -g conftestf.f conftest.o -o conftest -lrt -lm > -lutil > configure:63728: $? = 0 > configure:63802: result: yes > > > It appears that the only important difference here is that "-lrt" has now > appeared on the gfortran link line (which I assume pulls in libpthread). > This "-lrt" appears to be the result of the new probe for clock_gettime(). > > I am not sure exactly what breaks down after that. > > -Paul > > -- > Paul H. Hargrove <phhargr...@lbl.gov> > phhargr...@lbl.gov > Computer Languages & Systems Software (CLaSS) Group > Computer Science Department Tel: +1-510-495-2352 > Lawrence Berkeley National Laboratory Fax: +1-510-486-6900 > > > _______________________________________________ > devel mailing listde...@open-mpi.org > Subscription: https://www.open-mpi.org/mailman/listinfo.cgi/devel > Link to this post: > http://www.open-mpi.org/community/lists/devel/2016/05/19027.php > > > > _______________________________________________ > devel mailing list > de...@open-mpi.org > Subscription: https://www.open-mpi.org/mailman/listinfo.cgi/devel > Link to this post: > http://www.open-mpi.org/community/lists/devel/2016/05/19028.php > -- Paul H. Hargrove phhargr...@lbl.gov Computer Languages & Systems Software (CLaSS) Group Computer Science Department Tel: +1-510-495-2352 Lawrence Berkeley National Laboratory Fax: +1-510-486-6900