diff --git a/ompi/contrib/vt/vt/ChangeLog b/ompi/contrib/vt/vt/ChangeLog index 51192530ed..e26d5b497e 100644 --- a/ompi/contrib/vt/vt/ChangeLog +++ b/ompi/contrib/vt/vt/ChangeLog @@ -1,9 +1,20 @@ 5.14.1openmpi - updated version of internal OTF to 1.12.2openmpi (see extlib/otf/ChangeLog) + - added support for recording concurrent CUDA kernels with CUPTI (CUDA 5.0) - append "/vampirtrace" to DATADIR, if configuring inside Open MPI and DATADIR doesn't points to the default (=DATAROOTDIR) (prevents conflicts with the libtool RPM) + - fixed build issues when using the IBM XL compiler on AIX + - fixed build issues with Dyninst 8 + - revised memory allocation tracing: + - intercept memory (de)allocation functions by library wrapping + (replaces deprecated hook technique from the GNU C library) + - added support for multi-threaded applications + - changed default function group name for + - memory (de)allocation functions : "MEM" -> "LIBC-MALLOC" + - I/O functions : "I/O" -> "LIBC-I/O" + - child process execution (e.g. execl): "LIBC" -> "LIBC-EXEC" 5.14openmpi - updated version of internal OTF to 1.12.1openmpi diff --git a/ompi/contrib/vt/vt/INSTALL b/ompi/contrib/vt/vt/INSTALL index 68467d104b..d5813cfaaf 100644 --- a/ompi/contrib/vt/vt/INSTALL +++ b/ompi/contrib/vt/vt/INSTALL @@ -1,395 +1 @@ - -How to install and configure VampirTrace -======================================== - - Basics - ------ - - Building VampirTrace is typically a combination of running "configure" - and "make". Execute the following commands to install VampirTrace from - within the directory at the top of the tree: - - $ ./configure --prefix=/where/to/install - [...lots of output...] - $ make all install - - If you need special access to install, then you can execute "make - all" as a user with write permissions in the build tree, and a - separate "make install" as a user with write permissions to the - install tree. - - However, for more details, read also the following instructions. Sometimes - it might be necessary to provide ./configure with options, e.g. - specifications of paths or compilers. - - VampirTrace comes with example programs written in C, C++, and Fortran. - They can be used to test different instrumentation types of the - VampirTrace installation. - You can find them in the directory examples of the VampirTrace package. - - - Configure Options - ----------------- - - * Compilers and Options - - Some systems require unusual options for compilation or linking that - the `configure' script does not know about. Run `./configure --help' - for details on some of the pertinent environment variables. - - You can give `configure' initial values for configuration parameters - by setting variables in the command line or in the environment. Here - is an example: - - ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix - - - * Installation Names - - By default, `make install' will install the package's files in - `/usr/local/bin', /usr/local/include', etc. You can specify an - installation prefix other than `/usr/local' by giving `configure' the - option `--prefix=PATH'. - - - * Optional Features - - --enable-compinst=LIST - enable support for compiler instrumentation, - (gnu,intel,pathscale,pgi,pgi9,craycce,xl,necsx, - open64,openuh) - A VampirTrace installation can handle different - compilers. The first item in the list is the - run-time default. - default: automatically by configure - - --enable-dyninst - enable support for Dyninst instrumentation, - default: enable if found by configure - Note: Requires Dyninst version 6.1 or higher! - - --enable-dyninst-attlib - build shared library which attaches Dyninst to - the running application, default: enable if - Dyninst found by configure and system supports - shared libraries - - --enable-iotrace - enable LIBC's I/O tracing support, default: enable - if libdl found by configure - - --enable-libctrace - enable tracing support for several LIBC functions, - default: enable if libdl found by configure - - --enable-memtrace - enable memory tracing support, default: enable if - found by configure - - --enable-cpuidtrace - enable CPU ID tracing support, default: enable if - found by configure - - --enable-rutrace - enable resource usage tracing support, default: - enable if found by configure - - - --enable-metrics=TYPE - enable support for hardware performance counter - (papi,cpc,necsx), default: automatically by - configure - - --enable-zlib - enable ZLIB trace compression support, default: - enable if found by configure - - --enable-mpi - enable MPI support, default: enable if - MPI found by configure - - --enable-fmpi-lib - build the MPI Fortran support library, in case your - system does not have a MPI Fortran library. - default: enable if no MPI Fortran library - found by configure - - --enable-fmpi-handle-convert - do convert MPI handles, default: enable if MPI - conversion functions found by configure - - --enable-mpi2-thread - enable MPI-2 Thread support, default: enable if - found by configure - - --enable-mpi2-1sided - enable MPI-2 One-Sided Communication support, - default: enable if found by configure - - --enable-mpi2-extcoll - enable MPI-2 Extended Collective Operation support, - default: enable if found by configure - - --enable-mpi2-io - enable MPI-2 I/O support, default: enable if found - by configure - - --enable-mpicheck - enable support for Universal MPI Correctness - Interface (UniMCI), default: enable if - unimci-config found by configure - - --enable-etimesync - enable enhanced timer synchronization support, - default: enable if C-LAPACK found by configure - - --enable-threads=LIST - enable support for threads (pthread, omp), default: - automatically by configure - - --enable-java - enable Java support, default: enable if JVMTI - found by configure - - - * Important Optional Packages - - This a summary of the most important optional features. For a full list - of all available features run `./configure --help'. - - --with-platform=PLATFORM - configure for given platform - (altix,bgl,bgp,crayt3e,crayx1,crayxt,ibm,linux, - macos,necsx,origin,sicortex,sun,generic), - default: automatically by configure - - --with-bitmode=<32|64> - specify bit mode - - --with-options=FILE - load options from FILE, default: configure - searches for a config file in config/defaults - based on given platform and bitmode - - --with-local-tmp-dir=DIR - give the path for node-local temporary directory, - default: /tmp - - Specify name of (SMP) node-local directory that can be used to store - temporary trace files. - - If you would like to use an external version of OTF library, set - --with-extern-otf - use external OTF library, default: not seta - - --with-extern-otf-dir=OTFDIR - give the path for OTF, default: /usr - - --with-otf-flags=FLAGS - pass FLAGS to the OTF distribution configuration - (only for internal OTF version) - - --with-otf-lib=OTFLIB - use given otf lib, default: -lotf -lz - - If used OTF library was built without zlib support, then it will do - to set OTFLIB to '-lotf'. - - --with-dyninst-dir=DYNIDIR - give the path for DYNINST, default: /usr - - --with-dyninst-inc-dir=DYNIINCDIR - give the path for Dyninst-include files, - default: DYNIDIR/include - - --with-dyninst-lib-dir=DYNILIBDIR - give the path for Dyninst-libraries, - default: DYNIDIR/lib - - --with-dyninst-lib=DYNILIB - use given Dyninst lib, default: -ldyninstAPI - - --with-tau-instrumentor=TAUINSTUMENTOR - give the command for the TAU instrumentor, - default: tau_instrumentor - - --with-pdt-cparse=PDTCPARSE - give the command for PDT C source code parser, - default: cparse - - --with-pdt-cxxparse=PDTCXXPARSE - give the command for PDT C++ source code parser, - default: cxxparse - - --with-pdt-fparse=PDTFPARSE - give the command for PDT Fortran source code parser, - default: f95parse, f90parse, or gfparse - - --with-pdt-comment=PDTCOMMENT - give the command for PDT comment parser, - default: pdbcomment - - --with-papi-dir=PAPIDIR - give the path for PAPI, default: /usr - - --with-cpc-dir=CPCDIR - give the path for CPC, default: /usr - - If you don't have specified the environment variable MPICC - (MPI compiler command), use following options to set location - of your MPI installation: - - --with-mpi-dir=MPIDIR - give the path for MPI, default: /usr - - --with-mpi-inc-dir=MPIINCDIR - give the path for MPI-include-files, default: - MPIDIR/include - - --with-mpi-lib-dir=MPILIBDIR - give the path for MPI-libraries, default: - MPIDIR/lib - - --with-mpi-lib - use given mpi lib - - --with-pmpi-lib - use given pmpi lib - - If your system does not have a MPI Fortran library, - set '--enable-fmpi-lib' (see above), otherwise set - - --with-fmpi-lib - use given fmpi lib - - Use the following options to specify your MPI-implementation - - --with-hpmpi set MPI-libs for HP MPI - - --with-intelmpi set MPI-libs for Intel MPI - - --with-intelmpi2 set MPI-libs for Intel MPI2 - - --with-lam set MPI-libs for LAM/MPI - - --with-mpibgl set MPI-libs for IBM BG/L - - --with-mpibgp set MPI-libs for IBM BG/P - - --with-mpich set MPI-libs for MPICH - - --with-mpich2 set MPI-libs for MPICH2 - - --with-mvapich set MPI-libs for MVAPICH - - --with-mvapich2 set MPI-libs for MVAPICH2 - - --with-mpisx set MPI-libs for NEC MPI/SX - - --with-mpisx-ew set MPI-libs for NEC MPI/SX with - 8 Byte Fortran Integer - - --with-openmpi set MPI-libs for Open MPI - - --with-sgimpt set MPI-libs for SGI MPT - - --with-sunmpi set MPI-libs for SUN MPI - - --with-sunmpi-mt set MPI-libs for SUN MPI-MT - - To enable enhanced timer synchronization a LAPACK library with C wrapper - support is needed: - - --with-clapack-dir=LAPACKDIR - set the path for CLAPACK, - default: /usr - - --with-clapack-lib - set CLAPACK-libs, default: - -lclapack -lcblas -lf2c - - --with-clapack-acml set CLAPACK-libs for ACML - - --with-clapack-essl set CLAPACK-libs for ESSL - - --with-clapack-mkl set CLAPACK-libs for MKL - - --with-clapack-sunperf set CLAPACK-libs for SUN Performance Library - - To enable Java support the JVM Tool Interface (JVMTI) version 1.0 or - higher is needed: - - --with-jvmti-dir=JVMTIDIR - give the path for JVMTI, default: JAVA_HOME - - --with-jvmti-inc-dir=JVMTIINCDIR - give the path for JVMTI-include files, default: - JVMTI/include - - - Cross Compilation - ----------------- - - Building VampirTrace on cross compilation platforms needs some special attention. - The compiler wrappers, OPARI, and the Library Wrapper Generator are built for the - front-end (build system) whereas the VampirTrace libraries, vtdyn, vtunify, and - vtfilter are built for the back-end (host system). Some configure options which are - of interest for cross compilation are shown below: - - * Set CC, CXX, and FC to the cross compilers installed on the front-end. - - * Set CC_FOR_BUILD and CXX_FOR_BUILD to the native compilers of the front-end. - - * Set --host= to the output of config.guess on the back-end. - - * Set --with-cross-prefix= to a prefix which will be prepended to the executables - of the compiler wrappers and OPARI (default: cross-) - - * Maybe you also need to set additional commands and flags for the back-end - (e.g. RANLIB, AR, MPICC, CXXFLAGS). - - Examples: - BlueGene/P and BlueGene/Q: - % ./configure --host=powerpc64-ibm-linux-gnu - - Cray XK6: - % ./configure --host=x86_64-cray-linux-gnu - CC_FOR_BUILD=craycc - CXX_FOR_BUILD=crayc++ - - NEC SX6: - % ./configure --host=sx6-nec-superux14.1 - - - Set up the Environment - ---------------------- - - Add the bin subdirectory of the installation directory to your PATH - environment variable. To use VampirTrace with Dyninst, you will also need - to add the lib subdirectory to your LD_LIBRARY_PATH environment variable: - - for csh and tcsh: - - > setenv PATH /bin:$PATH - > setenv LD_LIBRARY_PATH /lib:$LD_LIBRARY_PATH - - for bash and sh: - - $ export PATH=/bin:$PATH - $ export LD_LIBRARY_PATH=/lib:$LD_LIBRARY_PATH - - - Notes for Developers - -------------------- - - * Build from CVS - - If you have checked out a DEVELOPER'S COPY of VampirTrace (i.e. you - checked out from CVS), you should first run: - - $ ./bootstrap [--otf-package ] [--version ] - - Note that GNU Autoconf >= 2.60 and GNU Automake >= 1.9.6 is required. - You can download them from http://www.gnu.org/software/autoconf and - http://www.gnu.org/software/automake. - +See doc/UserManual.pdf appendix A on how to install VampirTrace. diff --git a/ompi/contrib/vt/vt/acinclude.m4 b/ompi/contrib/vt/vt/acinclude.m4 index 55b5a0859e..cc25afa4ae 100644 --- a/ompi/contrib/vt/vt/acinclude.m4 +++ b/ompi/contrib/vt/vt/acinclude.m4 @@ -8,22 +8,22 @@ m4_include(config/m4/acinclude.csfs.m4) m4_include(config/m4/acinclude.ctool.m4) m4_include(config/m4/acinclude.cuda.m4) m4_include(config/m4/acinclude.cupti.m4) -m4_include(config/m4/acinclude.cudawrap.m4) +m4_include(config/m4/acinclude.cudartwrap.m4) m4_include(config/m4/acinclude.cxxrtlib.m4) m4_include(config/m4/acinclude.dl.m4) m4_include(config/m4/acinclude.dyninst.m4) m4_include(config/m4/acinclude.etimesync.m4) +m4_include(config/m4/acinclude.execwrap.m4) m4_include(config/m4/acinclude.getcpu.m4) m4_include(config/m4/acinclude.iofsl.m4) m4_include(config/m4/acinclude.iowrap.m4) m4_include(config/m4/acinclude.java.m4) m4_include(config/m4/acinclude.jvmti.m4) -m4_include(config/m4/acinclude.libcwrap.m4) m4_include(config/m4/acinclude.liberty.m4) m4_include(config/m4/acinclude.libwrap.m4) m4_include(config/m4/acinclude.ltmpdir.m4) +m4_include(config/m4/acinclude.mallocwrap.m4) m4_include(config/m4/acinclude.math.m4) -m4_include(config/m4/acinclude.memhooks.m4) m4_include(config/m4/acinclude.metrics.m4) m4_include(config/m4/acinclude.mpi.m4) m4_include(config/m4/acinclude.omp.m4) diff --git a/ompi/contrib/vt/vt/config/defaults/ibm b/ompi/contrib/vt/vt/config/defaults/ibm index c826b39505..be29fd8b33 100644 --- a/ompi/contrib/vt/vt/config/defaults/ibm +++ b/ompi/contrib/vt/vt/config/defaults/ibm @@ -8,5 +8,4 @@ OPENMP_CFLAGS="-qsmp=omp" PTHREAD_CFLAGS="-D_THREAD_SAFE" PTHREAD_LIBS="-lpthreads" enable_shared="no" -enable_memtrace="no" enable_cpuidtrace="no" diff --git a/ompi/contrib/vt/vt/config/defaults/ibm-64 b/ompi/contrib/vt/vt/config/defaults/ibm-64 index 8918cb08fb..dc155206a4 100644 --- a/ompi/contrib/vt/vt/config/defaults/ibm-64 +++ b/ompi/contrib/vt/vt/config/defaults/ibm-64 @@ -10,5 +10,4 @@ OPENMP_CFLAGS="-qsmp=omp" PTHREAD_CFLAGS="-D_THREAD_SAFE" PTHREAD_LIBS="-lpthreads" enable_shared="no" -enable_memtrace="no" enable_cpuidtrace="no" diff --git a/ompi/contrib/vt/vt/config/defaults/necsx b/ompi/contrib/vt/vt/config/defaults/necsx index cf285b7bc4..b14e10b9ac 100644 --- a/ompi/contrib/vt/vt/config/defaults/necsx +++ b/ompi/contrib/vt/vt/config/defaults/necsx @@ -17,7 +17,6 @@ CXXFLAGS_FOR_BUILD="-O2" OPENMP_CFLAGS="-Popenmp" PTHREAD_LIBS="-lpthread" enable_shared="no" -enable_memtrace="no" enable_libtrace="no" enable_cpuidtrace="no" enable_metrics="necsx" diff --git a/ompi/contrib/vt/vt/config/defaults/sun b/ompi/contrib/vt/vt/config/defaults/sun index ccb7dd90f2..58b820e86e 100644 --- a/ompi/contrib/vt/vt/config/defaults/sun +++ b/ompi/contrib/vt/vt/config/defaults/sun @@ -7,5 +7,4 @@ FCFLAGS="-xO3" OPENMP_CFLAGS="-xopenmp -xO3 -D_REENTRANT" PTHREAD_CFLAGS="-D_REENTRANT" PTHREAD_LIBS="-lpthread" -enable_memtrace="no" enable_cpuidtrace="no" diff --git a/ompi/contrib/vt/vt/config/m4/acinclude.conf.m4 b/ompi/contrib/vt/vt/config/m4/acinclude.conf.m4 index cdcd54e46f..3a7ea55daf 100644 --- a/ompi/contrib/vt/vt/config/m4/acinclude.conf.m4 +++ b/ompi/contrib/vt/vt/config/m4/acinclude.conf.m4 @@ -288,10 +288,6 @@ AC_DEFUN([ACVT_CONF_SUMMARY], [answer="yes"], [answer="no"]) echo " Build Resource usage trace support: $answer" - AS_IF([test x"$have_memhooks" = "xyes"], - [answer="yes"], [answer="no"]) - echo " Build GLIBC's memory alloc. trace support: $answer" - AS_IF([test x"$have_getcpu" = "xyes"], [answer="yes"], [answer="no"]) echo " Build GLIBC's CPU ID trace support: $answer" @@ -299,18 +295,22 @@ AC_DEFUN([ACVT_CONF_SUMMARY], AS_IF([test x"$have_libwrap" = "xyes"], [ answer= - AS_IF([test x"$have_libcwrap" = "xyes"], + AS_IF([test x"$have_execwrap" = "xyes"], [AS_IF([test x"$answer" != x], - [answer="$answer, LIBC"], - [answer="LIBC"])]) + [answer="$answer, LIBC-EXEC"], + [answer="LIBC-EXEC"])]) AS_IF([test x"$have_iowrap" = "xyes"], [AS_IF([test x"$answer" != x], [answer="$answer, LIBC-I/O"], [answer="LIBC-I/O"])]) + AS_IF([test x"$have_mallocwrap" = "xyes"], + [AS_IF([test x"$answer" != x], + [answer="$answer, LIBC-MALLOC"], + [answer="LIBC-MALLOC"])]) AS_IF([test x"$have_cudartwrap" = "xyes"], [AS_IF([test x"$answer" != x], - [answer="$answer, CUDA"], - [answer="CUDA"])]) + [answer="$answer, CUDA-RT"], + [answer="CUDA-RT"])]) answer="yes ($answer)" ], [answer="no"]) echo " Build Library trace support: $answer" diff --git a/ompi/contrib/vt/vt/config/m4/acinclude.cudawrap.m4 b/ompi/contrib/vt/vt/config/m4/acinclude.cudartwrap.m4 similarity index 68% rename from ompi/contrib/vt/vt/config/m4/acinclude.cudawrap.m4 rename to ompi/contrib/vt/vt/config/m4/acinclude.cudartwrap.m4 index 0512ba8012..2fb56c25e1 100644 --- a/ompi/contrib/vt/vt/config/m4/acinclude.cudawrap.m4 +++ b/ompi/contrib/vt/vt/config/m4/acinclude.cudartwrap.m4 @@ -1,21 +1,27 @@ -AC_DEFUN([ACVT_CUDAWRAP], +AC_DEFUN([ACVT_CUDARTWRAP], [ - check_cudart="yes" - force_cudart="no" + cudartwrap_error="no" + check_cudartwrap="yes" have_cudartwrap="no" cudartshlib_pathname= - AC_ARG_ENABLE(cudawrap, - AC_HELP_STRING([--enable-cudawrap], - [enable support for tracing CUDA via library wrapping, default: enable if found by configure]), - [AS_IF([test x"$enableval" = "xyes"], [force_cudart="yes"], [check_cudart="no"])]) + AC_REQUIRE([ACVT_CUPTI]) - AS_IF([test "$check_cudart" = "yes"], + AC_ARG_ENABLE(cudartwrap, + AC_HELP_STRING([--enable-cudartwrap], + [enable support for tracing the CUDA runtime API via library wrapping, default: enable if no CUPTI present]), + [AS_IF([test x"$enableval" = "xyes"], [force_cudartwrap="yes"], [check_cudartwrap="no"])], + [AS_IF([test x"$force_cudartwrap" = "xno" -a x"$have_cupti" = "xyes"], [check_cudartwrap="no"])]) + + AS_IF([test "$check_cudartwrap" = "yes"], [ AC_REQUIRE([ACVT_CUDA]) - AS_IF([test x"$cudart_error" = "xno"], + AS_IF([test x"$have_cuda" != "xyes" -o x"$have_cudart" != "xyes"], + [cudartwrap_error="yes"]) + + AS_IF([test x"$cudartwrap_error" = "xno"], [ AC_ARG_WITH(cudart-shlib, AC_HELP_STRING([--with-cudart-shlib=CUDARTSHLIB], [give the pathname for the shared CUDA runtime library, default: automatically by configure]), @@ -26,7 +32,7 @@ AC_DEFUN([ACVT_CUDAWRAP], ]) ]) - AS_IF([test x"$cudart_error" = "xno"], + AS_IF([test x"$cudartwrap_error" = "xno"], [ AC_MSG_CHECKING([for pathname of shared CUDA runtime library]) @@ -48,7 +54,7 @@ AC_DEFUN([ACVT_CUDAWRAP], [ AC_MSG_RESULT([unknown]) AC_MSG_NOTICE([error: could not determine pathname of shared CUDA runtime library]) - cudart_error="yes" + cudartwrap_error="yes" ], [ AC_MSG_RESULT([$cudartshlib_pathname]) @@ -57,7 +63,7 @@ AC_DEFUN([ACVT_CUDAWRAP], ]) ]) - AS_IF([test x"$cudart_error" = "xno"], + AS_IF([test x"$cudartwrap_error" = "xno"], [ AS_IF([test x"$cudartshlib_pathname" != x], [ diff --git a/ompi/contrib/vt/vt/config/m4/acinclude.dl.m4 b/ompi/contrib/vt/vt/config/m4/acinclude.dl.m4 index b28f678f2a..34870a62d7 100644 --- a/ompi/contrib/vt/vt/config/m4/acinclude.dl.m4 +++ b/ompi/contrib/vt/vt/config/m4/acinclude.dl.m4 @@ -40,13 +40,16 @@ AC_DEFUN([ACVT_DL], ]) AS_IF([test "$PLATFORM" = "bgp" -o "$PLATFORM" = "bgq"], [ -dnl RTLD_NEXT available but not working on BG/P (and BG/Q?) platforms - ac_cv_have_decl_RTLD_NEXT="no" + AS_IF([test x"$enable_shared" = "xno"], + [ + ac_cv_have_decl_RTLD_DEFAULT="no" + ac_cv_have_decl_RTLD_NEXT="no" + ]) ]) AS_IF([test "$PLATFORM" = "crayxt" -o "$PLATFORM" = "crayxe"], [ -dnl RTLD_DEFAULT available but not working on CrayX? platforms ac_cv_have_decl_RTLD_DEFAULT="no" + ac_cv_have_decl_RTLD_NEXT="no" ]) AS_IF([test x"$dl_error" = "xno"], diff --git a/ompi/contrib/vt/vt/config/m4/acinclude.execwrap.m4 b/ompi/contrib/vt/vt/config/m4/acinclude.execwrap.m4 new file mode 100644 index 0000000000..a93662e283 --- /dev/null +++ b/ompi/contrib/vt/vt/config/m4/acinclude.execwrap.m4 @@ -0,0 +1,33 @@ +AC_DEFUN([ACVT_EXECWRAP], +[ + execwrap_error="no" + check_execwrap="yes" + have_execwrap="no" + + AC_ARG_ENABLE(exectrace, + AC_HELP_STRING([--enable-exectrace], + [enable support for tracing LIBC functions for creating and controling child processes (e.g. execl,fork,system,wait) via library wrapping, default: enable]), + [AS_IF([test x"$enableval" = "xyes"], [force_execwrap="yes"], [check_execwrap="no"])]) + + AS_IF([test "$check_execwrap" = "yes"], + [ + AS_IF([test x"$shlibc_pathname" = x], + [ + AC_MSG_NOTICE([error: pathname of shared LIBC required for LIBC-EXEC tracing; please specify it by --with-shlibc]) + execwrap_error="yes" + ]) + + AS_IF([test x"$execwrap_error" = "xno"], + [ + AC_CHECK_TYPES([__WAIT_STATUS], [], [], [#include ]) + + sav_CPPFLAGS=$CPPFLAGS + CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE -D_SVID_SOURCE -D_BSD_SOURCE" + AC_CHECK_FUNCS([execvpe fexecve waitid wait3 wait4]) + CPPFLAGS=$sav_CPPFLAGS + + have_execwrap="yes" + ]) + ]) +]) + diff --git a/ompi/contrib/vt/vt/config/m4/acinclude.iowrap.m4 b/ompi/contrib/vt/vt/config/m4/acinclude.iowrap.m4 index 9acf19c440..81ff550713 100644 --- a/ompi/contrib/vt/vt/config/m4/acinclude.iowrap.m4 +++ b/ompi/contrib/vt/vt/config/m4/acinclude.iowrap.m4 @@ -1,49 +1,59 @@ AC_DEFUN([ACVT_IOWRAP], [ iowrap_error="no" + check_iowrap="yes" have_iowrap="no" - AS_IF([test x"$shlibc_pathname" = x], + AC_ARG_ENABLE(iotrace, + AC_HELP_STRING([--enable-iotrace], + [enable support for tracing LIBC I/O functions (e.g. fopen,fclose,fread,fwrite) via library wrapping, default: enable]), + [AS_IF([test x"$enableval" = "xyes"], [force_iowrap="yes"], [check_iowrap="no"])]) + + + AS_IF([test "$check_iowrap" = "yes"], [ - AC_MSG_NOTICE([error: pathname of shared LIBC required for LIBC-I/O tracing; please specify it by --with-shlibc]) - iowrap_error="yes" - ]) - - AS_IF([test x"$iowrap_error" = "xno"], - [ - sav_CPPFLAGS=$CPPFLAGS - CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE -D_LARGEFILE64_SOURCE" - - AC_CHECK_FUNCS([ \ - creat64 \ - fopen64 \ - fseeko \ - fseeko64 \ - lseek64 \ - fsetpos64 \ - open64 \ - pread64 \ - pwrite64 \ - flockfile \ - ftrylockfile \ - funlockfile \ - sync \ - fflush \ - fsync \ - fdatasync \ - lockf]) - - AC_CHECK_FUNCS([__fprintf_chk], + AS_IF([test x"$shlibc_pathname" = x], [ -dnl Check whether declares __vfprintf_chk. This should be the case if -dnl _FORTIFY_SOURCE is defined (default when using the GNU compiler). -dnl Otherwise, we have to declare this function to avoid compiler warnings. - AC_CHECK_DECLS([__vfprintf_chk], [], [], [#include ]) + AC_MSG_NOTICE([error: pathname of shared LIBC required for LIBC-I/O tracing; please specify it by --with-shlibc]) + iowrap_error="yes" ]) - CPPFLAGS=$sav_CPPFLAGS + AS_IF([test x"$iowrap_error" = "xno"], + [ + sav_CPPFLAGS=$CPPFLAGS + CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE -D_LARGEFILE64_SOURCE" - have_iowrap="yes" + AC_CHECK_FUNCS([ \ + creat64 \ + fopen64 \ + fseeko \ + fseeko64 \ + lseek64 \ + fsetpos64 \ + open64 \ + pread64 \ + pwrite64 \ + flockfile \ + ftrylockfile \ + funlockfile \ + sync \ + fflush \ + fsync \ + fdatasync \ + lockf]) + + AC_CHECK_FUNCS([__fprintf_chk], + [ +dnl Check whether declares __vfprintf_chk. This should be the case if +dnl _FORTIFY_SOURCE is defined (default when using the GNU compiler). +dnl Otherwise, we have to declare this function to avoid compiler warnings. + AC_CHECK_DECLS([__vfprintf_chk], [], [], [#include ]) + ]) + + CPPFLAGS=$sav_CPPFLAGS + + have_iowrap="yes" + ]) ]) ]) diff --git a/ompi/contrib/vt/vt/config/m4/acinclude.libcwrap.m4 b/ompi/contrib/vt/vt/config/m4/acinclude.libcwrap.m4 deleted file mode 100644 index c76fa75d81..0000000000 --- a/ompi/contrib/vt/vt/config/m4/acinclude.libcwrap.m4 +++ /dev/null @@ -1,31 +0,0 @@ -AC_DEFUN([ACVT_LIBCWRAP], -[ - libcwrap_error="no" - have_libcwrap="no" - have_fork="no" - - AS_IF([test x"$shlibc_pathname" = x], - [ - AC_MSG_NOTICE([error: pathname of shared LIBC required for LIBC tracing; please specify it by --with-shlibc]) - libcwrap_error="yes" - ]) - - AS_IF([test x"$libcwrap_error" = "xno"], - [ - AC_CHECK_FUNCS([fork], [have_fork="yes"]) - - AC_CHECK_FUNCS([ \ - execl \ - execle \ - execlp \ - execv \ - execve \ - execvp \ - system \ - wait \ - waitpid]) - - have_libcwrap="yes" - ]) -]) - diff --git a/ompi/contrib/vt/vt/config/m4/acinclude.libwrap.m4 b/ompi/contrib/vt/vt/config/m4/acinclude.libwrap.m4 index 40f1672be0..77b9a3b11d 100644 --- a/ompi/contrib/vt/vt/config/m4/acinclude.libwrap.m4 +++ b/ompi/contrib/vt/vt/config/m4/acinclude.libwrap.m4 @@ -1,14 +1,15 @@ AC_DEFUN([ACVT_LIBWRAP], [ libwrap_error="no" - check_libwrap="gen libc io cuda" + check_libwrap="gen exec io malloc cudart" force_libwrap="no" have_libwrap="no" force_libwrapgen="no" build_libwrapgen="no" - force_libcwrap="no" + force_execwrap="no" force_iowrap="no" + force_mallocwrap="no" force_cudartwrap="no" shlibc_pathname= @@ -17,7 +18,7 @@ AC_DEFUN([ACVT_LIBWRAP], AC_ARG_ENABLE(libtrace, AC_HELP_STRING([--enable-libtrace=LIST], - [enable library tracing support (gen,libc,io,cuda), default: automatically by configure]), + [enable library tracing support (gen,exec,io,malloc,cudart), default: automatically by configure]), [ AS_IF([test x"$enableval" = "xno"], [check_libwrap="no"]) AS_IF([test x"$enableval" = "xyes"], [force_libwrap="yes"]) @@ -30,17 +31,24 @@ AC_DEFUN([ACVT_LIBWRAP], gen) force_libwrapgen="yes" ;; - libc) - force_libcwrap="yes" + libc | exec) + check_execwrap="yes" + force_execwrap="yes" ;; io) + check_iowrap="yes" force_iowrap="yes" ;; - cuda) + malloc) + check_mallocwrap="yes" + force_mallocwrap="yes" + ;; + cuda | cudart) + check_cudartwrap="yes" force_cudartwrap="yes" ;; *) - AC_MSG_ERROR([value of '--enable-libtrace' not properly set]) + AC_MSG_ERROR([value of '--enable-libwrap' not properly set]) ;; esac done @@ -118,16 +126,23 @@ AC_DEFUN([ACVT_LIBWRAP], [have_libwrap="yes"; build_libwrapgen="yes"], [ AS_IF([test x"$force_libwrapgen" = "xyes"], - [libwrap_error="yes"; break]) + [ + libwrap_error="yes" + break + ]) ]) ;; - libc) - ACVT_CONF_SUBTITLE([LIBC]) - ACVT_LIBCWRAP - AS_IF([test x"$have_libcwrap" = "xyes"], [have_libwrap="yes"], + libc | exec) + ACVT_CONF_SUBTITLE([LIBC-EXEC]) + ACVT_EXECWRAP + AS_IF([test x"$have_execwrap" = "xyes"], [have_execwrap="yes"], [ - AS_IF([test x"$force_libcwrap" = "xyes"], - [libwrap_error="yes"; break]) + AS_IF([test x"$force_execwrap" = "xyes"], + [ + force_libwrap="yes" + libwrap_error="yes" + break + ]) ]) ;; io) @@ -136,16 +151,37 @@ AC_DEFUN([ACVT_LIBWRAP], AS_IF([test x"$have_iowrap" = "xyes"], [have_libwrap="yes"], [ AS_IF([test x"$force_iowrap" = "xyes"], - [libwrap_error="yes"; break]) + [ + force_libwrap="yes" + libwrap_error="yes" + break + ]) ]) ;; - cuda) - ACVT_CONF_SUBTITLE([CUDAWRAP]) - ACVT_CUDAWRAP + malloc) + ACVT_CONF_SUBTITLE([LIBC-MALLOC]) + ACVT_MALLOCWRAP + AS_IF([test x"$have_mallocwrap" = "xyes"], [have_libwrap="yes"], + [ + AS_IF([test x"$force_mallocwrap" = "xyes"], + [ + force_libwrap="yes" + libwrap_error="yes" + break + ]) + ]) + ;; + cuda | cudart) + ACVT_CONF_SUBTITLE([CUDA-RT]) + ACVT_CUDARTWRAP AS_IF([test x"$have_cudartwrap" = "xyes"], [have_libwrap="yes"], [ AS_IF([test x"$force_cudartwrap" = "xyes"], - [libwrap_error="yes"; break]) + [ + force_libwrap="yes" + libwrap_error="yes" + break + ]) ]) ;; esac diff --git a/ompi/contrib/vt/vt/config/m4/acinclude.mallocwrap.m4 b/ompi/contrib/vt/vt/config/m4/acinclude.mallocwrap.m4 new file mode 100644 index 0000000000..df410a15ed --- /dev/null +++ b/ompi/contrib/vt/vt/config/m4/acinclude.mallocwrap.m4 @@ -0,0 +1,35 @@ +AC_DEFUN([ACVT_MALLOCWRAP], +[ + mallocwrap_error="no" + check_mallocwrap="yes" + have_mallocwrap="no" + + AC_ARG_ENABLE(memtrace, + AC_HELP_STRING([--enable-memtrace], + [enable support for tracing LIBC functions for memory de/allocation (e.g. malloc,calloc,realloc,free) via library wrapping, default: enable]), + [AS_IF([test x"$enableval" = "xyes"], [force_mallocwrap="yes"], [check_mallocwrap="no"])]) + + AS_IF([test "$check_mallocwrap" = "yes"], + [ + sav_CPPFLAGS=$CPPFLAGS + CPPFLAGS="$CPPFLAGS $DLINCDIR -D_GNU_SOURCE" + AC_CHECK_DECLS([RTLD_NEXT], [], [mallocwrap_error="yes"], [#include ]) + CPPFLAGS=$sav_CPPFLAGS + + AS_IF([test x"$mallocwrap_error" = "xno"], + [ + AC_CHECK_FUNC([malloc_usable_size], [], [mallocwrap_error="yes"]) + ]) + + AS_IF([test x"$mallocwrap_error" = "xno"], + [ + sav_CPPFLAGS=$CPPFLAGS + CPPFLAGS="$CPPFLAGS $DLINCDIR -D_BSD_SOURCE" + AC_CHECK_FUNCS([memalign posix_memalign valloc]) + CPPFLAGS=$sav_CPPFLAGS + + have_mallocwrap="yes" + ]) + ]) +]) + diff --git a/ompi/contrib/vt/vt/config/m4/acinclude.memhooks.m4 b/ompi/contrib/vt/vt/config/m4/acinclude.memhooks.m4 deleted file mode 100644 index b870b84cd2..0000000000 --- a/ompi/contrib/vt/vt/config/m4/acinclude.memhooks.m4 +++ /dev/null @@ -1,35 +0,0 @@ -AC_DEFUN([ACVT_MEMHOOKS], -[ - memhooks_error="no" - check_memhooks="yes" - force_memhooks="no" - have_memhooks="no" - - AC_ARG_ENABLE(memtrace, - AC_HELP_STRING([--enable-memtrace], [enable memory tracing support, default: enable if found by configure]), - [AS_IF([test x"$enableval" = "xyes"], [force_memhooks="yes"], [check_memhooks="no"])]) - - AS_IF([test x"$check_memhooks" = "xyes"], - [ - AC_CHECK_HEADER([malloc.h], [], - [ - AC_MSG_NOTICE([error: no malloc.h found]) - memhooks_error="yes" - ]) - - AS_IF([test x"$memhooks_error" = "xno"], - [ - memhooks_error="yes" - AC_CHECK_FUNC([__malloc_hook], - [AC_CHECK_FUNC([__realloc_hook], - [AC_CHECK_FUNC([__free_hook], [memhooks_error="no"], - [])])]) - ]) - - AS_IF([test x"$memhooks_error" = "xno"], - [ - have_memhooks="yes" - ]) - ]) -]) - diff --git a/ompi/contrib/vt/vt/config/m4/acinclude.papi.m4 b/ompi/contrib/vt/vt/config/m4/acinclude.papi.m4 index 4975443a87..43012c3f7d 100644 --- a/ompi/contrib/vt/vt/config/m4/acinclude.papi.m4 +++ b/ompi/contrib/vt/vt/config/m4/acinclude.papi.m4 @@ -82,7 +82,7 @@ See \`config.log' for more details.]) [ sav_CPPFLAGS=$CPPFLAGS CPPFLAGS="$CPPFLAGS $PAPIINCDIR" - AC_CHECK_DECLS([long_long], [], [], [#include ]) + AC_CHECK_TYPES([long_long], [], [], [#include ]) CPPFLAGS=$sav_CPPFLAGS ]) diff --git a/ompi/contrib/vt/vt/config/m4/acinclude.vtsetup.m4 b/ompi/contrib/vt/vt/config/m4/acinclude.vtsetup.m4 index 4a94d526d3..a468629d0b 100644 --- a/ompi/contrib/vt/vt/config/m4/acinclude.vtsetup.m4 +++ b/ompi/contrib/vt/vt/config/m4/acinclude.vtsetup.m4 @@ -49,9 +49,9 @@ AC_DEFUN([ACVT_SETUP], AS_IF([test x"$have_dyninst" = "xyes" -a x"$build_dynattlib" = "xyes"], [VT_SETUP_DYNINST=1]) AS_IF([test x"$build_etimesync" = "xyes"], [VT_SETUP_ETIMESYNC=1]) AS_IF([test x"$have_iowrap" = "xyes"], [VT_SETUP_IOTRACE=1]) + AS_IF([test x"$have_execwrap" = "xyes"], [VT_SETUP_EXECTRACE=1]) + AS_IF([test x"$have_mallocwrap" = "xyes"], [VT_SETUP_MEMTRACE=1]) AS_IF([test x"$have_java" = "xyes"], [VT_SETUP_JAVA=1]) - AS_IF([test x"$have_libcwrap" = "xyes"], [VT_SETUP_LIBCTRACE=1]) - AS_IF([test x"$have_memhooks" = "xyes"], [VT_SETUP_MEMTRACE=1]) AS_IF([test x"$have_papi" = "xyes"], [VT_SETUP_METRICS=1]) AS_IF([test x"$have_mpi" = "xyes"], [VT_SETUP_MPI=1]) AS_IF([test x"$have_unimci" = "xyes"], [VT_SETUP_MPICHECK=1]) diff --git a/ompi/contrib/vt/vt/configure.in b/ompi/contrib/vt/vt/configure.in index 986b6e0cfc..5db3577deb 100644 --- a/ompi/contrib/vt/vt/configure.in +++ b/ompi/contrib/vt/vt/configure.in @@ -102,6 +102,7 @@ AC_PROG_CXXCPP AM_PROG_AS AC_C_BIGENDIAN +AC_C_INLINE # Do we want to support Fortran check_fortran="yes" @@ -373,14 +374,6 @@ AS_IF([test x"$enable_config_titles" = "xyes" -a x"$check_plugin_cntr" = "xno"], AS_IF([test x"$force_plugin_cntr" = "xyes" -a x"plugin_cntr_error" = "xyes"], [exit 1]) AM_CONDITIONAL(AMHAVEPLUGINCNTR, test x"$have_plugin_cntr" = "xyes") -# Check for memory tracing support -ACVT_CONF_TITLE([GLIBC's memory allocation tracing]) -ACVT_MEMHOOKS -AS_IF([test x"$enable_config_titles" = "xyes" -a x"$check_memhooks" = "xno"], -[AC_MSG_NOTICE([disabled via command line switch])]) -AS_IF([test x"$force_memhooks" = "xyes" -a x"$memhooks_error" = "xyes"], [exit 1]) -AM_CONDITIONAL(AMHAVEMEMHOOKS, test x"$have_memhooks" = "xyes") - # Check for CPU ID tracing support ACVT_CONF_TITLE([GLIBC's CPU ID tracing]) ACVT_GETCPU @@ -427,9 +420,9 @@ AS_IF([test x"$enable_config_titles" = "xyes" -a x"$check_libwrap" = "xno"], AM_CONDITIONAL(AMBUILDLIBWRAP, test x"$have_libwrap" = "xyes") AM_CONDITIONAL(AMBUILDLIBWRAPGEN, test x"$build_libwrapgen" = "xyes") AM_CONDITIONAL(AMHAVEDL, test x"$have_dl" = "xyes") -AM_CONDITIONAL(AMBUILDLIBCWRAP, test x"$have_libcwrap" = "xyes") -AM_CONDITIONAL(AMHAVEFORK, test x"$have_libcwrap" = "xyes" -a x"$have_fork" = "xyes") +AM_CONDITIONAL(AMBUILDEXECWRAP, test x"$have_execwrap" = "xyes") AM_CONDITIONAL(AMBUILDIOWRAP, test x"$have_iowrap" = "xyes") +AM_CONDITIONAL(AMBUILDMALLOCWRAP, test x"$have_mallocwrap" = "xyes") AM_CONDITIONAL(AMBUILDCUDARTWRAP, test x"$have_cudartwrap" = "xyes") cond_cuda=0 diff --git a/ompi/contrib/vt/vt/doc/UserManual.html b/ompi/contrib/vt/vt/doc/UserManual.html index e35c9a250b..4853f0acdb 100644 --- a/ompi/contrib/vt/vt/doc/UserManual.html +++ b/ompi/contrib/vt/vt/doc/UserManual.html @@ -67,7 +67,7 @@ BODY { font-family: sans-serif; }

-VampirTrace 5.14.1 User Manual +VampirTrace 5.15b User Manual


@@ -184,7 +184,7 @@ Contents

  • I/O Calls
  • fork/system/exec Calls + HREF="#SECTION00590000000000000000">Child Process Execution Calls
  • MPI Correctness Checking Using UniMCI
  • After a successful tracing run, VampirTrace writes all collected data to a trace file in the Open Trace Format (OTF)[*][*]. As a result, the information is available for post-mortem analysis and visualization by various tools. Most notably, VampirTrace provides the input data for the Vampir analysis and visualization tool[*][*].

    VampirTrace is included in OpenMPI 1.3 and later versions. If not disabled explicitly, VampirTrace is built automatically when installing OpenMPI[*][*].

    @@ -507,12 +507,22 @@ Note that not all features are supported on all platforms.

    - Memory Tracing ⇒ Section 4.3
    + CPU ID Tracing ⇒ Section 4.4

      -
    • Trace GLIBC memory allocation and free functions +
    • Trace core ID of a CPU on which the calling thread is running
    • -
    • Record size of currently allocated memory as counter +
    • Record core ID as counter +
    • +
    + +

    + Child Process Execution Tracing ⇒ Section 4.9
    + +

      +
    • Trace LIBC function calls for creating and controling child processes +
    • +
    • Add forked processes to the trace
    @@ -527,22 +537,12 @@ Note that not all features are supported on all platforms.

    - CPU ID Tracing ⇒ Section 4.4
    + Memory Allocation Tracing ⇒ Section 4.3

      -
    • Trace core ID of a CPU on which the calling thread is running +
    • Trace LIBC memory allocation and free functions
    • -
    • Record core ID as counter -
    • -
    - -

    - Fork/System/Exec Tracing ⇒ Section 4.9
    - -

      -
    • Trace applications calling LIBC's fork, system, or one of the exec functions -
    • -
    • Add forked processes to the trace +
    • Record size of currently allocated memory as counter
    @@ -1185,7 +1185,7 @@ in a single file, that The names in between may contain wildcards as ``?'', ``*', and ``#'', each entry gets a new line. The lists end with END[_FILE]_<INCLUDE|EXCLUDE>_LIST. For further information on selective profiling have a look at the TAU documentation[*][*]. To announce the file through the compiler wrapper use the option -vt:tau:
    @@ -1202,7 +1202,7 @@ Binary Instrumentation Using Dyninst
     The option -vt:inst dyninst is used with the compiler wrapper to 
     instrument the application during runtime (binary instrumentation), by using 
     Dyninst[*][*].
     Recompiling is not necessary for this kind of instrumentation,
     but relinking:
    @@ -1353,7 +1353,7 @@ Tracing Calls to 3rd-Party Libraries
       VampirTrace is also capable to trace calls to third party libraries, which come with
       at least one C header file even without the library's source code. If VampirTrace was
       built with support for library tracing (the CTool library[*][*]  is required), the tool vtlibwrapgen can be used to
       generate a wrapper library to intercept each call to the actual library functions.
       This wrapper library can be linked to the application or used in combination with the
    @@ -1640,10 +1640,10 @@ of a VampirTrace instrumented executable:
     	⇒ Section 4.8
     no
     
    -VT_LIBCTRACE
    -Enable tracing of fork/system/exec calls?
    +VT_EXECTRACE
    +Enable tracing of function calls for creating and controling child processes?
     	
    - ⇒ Section 4.9 calls + ⇒ Section 4.9 yes VT_MEMTRACE @@ -2029,7 +2029,7 @@ for the enhanced timer synchronization: