1
1

Remove the actual VampirTrace sources.

Этот коммит содержится в:
Bert Wesarg 2015-01-22 08:04:15 +01:00
родитель d01c5160df
Коммит 92f976bdf1
628 изменённых файлов: 0 добавлений и 227878 удалений

75
.gitignore поставляемый
Просмотреть файл

@ -132,81 +132,6 @@ examples/oshmem_shmalloc
examples/oshmem_strided_puts
examples/oshmem_symmetric_data
ompi/contrib/vt/vt/aclocal.m4
ompi/contrib/vt/vt/autom4te.cache
ompi/contrib/vt/vt/config.h
ompi/contrib/vt/vt/config.h.in
ompi/contrib/vt/vt/config/mpigen/mk_c_wrapper.sh
ompi/contrib/vt/vt/config/mpigen/mk_fortran_wrapper.sh
ompi/contrib/vt/vt/config/mpigen/mk_registry.sh
ompi/contrib/vt/vt/extlib/otf/config.h
ompi/contrib/vt/vt/extlib/otf/config.h.in
ompi/contrib/vt/vt/extlib/otf/config/py-compile
ompi/contrib/vt/vt/extlib/otf/otflib/OTF_inttypes_unix.h
ompi/contrib/vt/vt/extlib/otf/tests/generic_streams/otf_generic_streams
ompi/contrib/vt/vt/extlib/otf/tests/generic_streams-mpi/otf_generic_streams_mpi
ompi/contrib/vt/vt/extlib/otf/tests/hello/otf_hello
ompi/contrib/vt/vt/extlib/otf/tests/progress/otf_progress
ompi/contrib/vt/vt/extlib/otf/tests/read_from_buffer/otf_read_from_buffer
ompi/contrib/vt/vt/extlib/otf/tests/thumbnail/otf_thumbnail
ompi/contrib/vt/vt/extlib/otf/tools/otf2vtf/otf2vtf
ompi/contrib/vt/vt/extlib/otf/tools/otfaux/otfaux
ompi/contrib/vt/vt/extlib/otf/tools/otfcompress/otfcompress
ompi/contrib/vt/vt/extlib/otf/tools/otfconfig/otfconfig
ompi/contrib/vt/vt/extlib/otf/tools/otfdump/otfdump
ompi/contrib/vt/vt/extlib/otf/tools/otfdump/otfprint
ompi/contrib/vt/vt/extlib/otf/tools/otfinfo/otfinfo
ompi/contrib/vt/vt/extlib/otf/tools/otfmerge/otfmerge
ompi/contrib/vt/vt/extlib/otf/tools/otfmerge/mpi/otfmerge-mpi
ompi/contrib/vt/vt/extlib/otf/tools/otfmerge/mpi/*c
ompi/contrib/vt/vt/extlib/otf/tools/otfprofile/otfprofile
ompi/contrib/vt/vt/extlib/otf/tools/otfprofile/mpi/otfprofile-mpi
ompi/contrib/vt/vt/extlib/otf/tools/otfprofile/mpi/*.cpp
ompi/contrib/vt/vt/extlib/otf/tools/otfshrink/otfshrink
ompi/contrib/vt/vt/extlib/otf/tools/vtf2otf/vtf2otf
ompi/contrib/vt/vt/include/vt_inttypes.h
ompi/contrib/vt/vt/tools/opari/tool/opari
ompi/contrib/vt/vt/tools/opari/tool/util.c
ompi/contrib/vt/vt/tools/vtcpcavail/vtcpcavail
ompi/contrib/vt/vt/tools/vtdyn/vtdyn
ompi/contrib/vt/vt/tools/vtdyn/dynattlib/libvt-dynatt.*
ompi/contrib/vt/vt/tools/vtfilter/vtfilter
ompi/contrib/vt/vt/tools/vtfilter/mpi/vtfilter-mpi
ompi/contrib/vt/vt/tools/vtfilter/mpi/*.cc
ompi/contrib/vt/vt/tools/vtfilter/mpi/old
ompi/contrib/vt/vt/tools/vtiofsl/vtiofsl-common
ompi/contrib/vt/vt/tools/vtiofsl/vtiofsl-start
ompi/contrib/vt/vt/tools/vtiofsl/vtiofsl-stop
ompi/contrib/vt/vt/tools/vtjava/vtjava
ompi/contrib/vt/vt/tools/vtlibwrapgen/vt_libwrapgen_defs.h
ompi/contrib/vt/vt/tools/vtlibwrapgen/vtlibwrapgen
ompi/contrib/vt/vt/tools/vtlibwrapgen/installdirs.c
ompi/contrib/vt/vt/tools/vtlibwrapgen/util.c
ompi/contrib/vt/vt/tools/vtrun/vtrun
ompi/contrib/vt/vt/tools/vtsetup/vtsetup
ompi/contrib/vt/vt/tools/vtsetup/vtsetup-config.xml
ompi/contrib/vt/vt/tools/vtsetup/vtsetup-data.xml
ompi/contrib/vt/vt/tools/vtsetup/doc/ChangeLog
ompi/contrib/vt/vt/tools/vtsetup/doc/LICENSE
ompi/contrib/vt/vt/tools/vtunify/vtunify
ompi/contrib/vt/vt/tools/vtunify/mpi/vtunify-mpi
ompi/contrib/vt/vt/tools/vtunify/mpi/hooks
ompi/contrib/vt/vt/tools/vtunify/mpi/*.cc
ompi/contrib/vt/vt/tools/vtwrapper/vtwrapper
ompi/contrib/vt/vt/tools/vtwrapper/vtcc-wrapper-data.txt
ompi/contrib/vt/vt/tools/vtwrapper/vtc++-wrapper-data.txt
ompi/contrib/vt/vt/tools/vtwrapper/vtfort-wrapper-data.txt
ompi/contrib/vt/vt/tools/vtwrapper/vtf77-wrapper-data.txt
ompi/contrib/vt/vt/tools/vtwrapper/vtf90-wrapper-data.txt
ompi/contrib/vt/vt/tools/vtwrapper/vtnvcc-wrapper-data.txt
ompi/contrib/vt/vt/tools/vtwrapper/installdirs.c
ompi/contrib/vt/vt/tools/vtwrapper/util.c
ompi/contrib/vt/vt/util/installdirs_conf.h
ompi/contrib/vt/vt/vtlib/vt_fmpiwrap.gen.c
ompi/contrib/vt/vt/vtlib/vt_mpireg.gen.c
ompi/contrib/vt/vt/vtlib/vt_mpireg.gen.h
ompi/contrib/vt/vt/vtlib/vt_mpiwrap.gen.c
ompi/debuggers/*.in
ompi/debuggers/dlopen_test
ompi/debuggers/predefined_gap_test

Просмотреть файл

@ -1,19 +0,0 @@
VampirTrace is developped in collaboration with the KOJAK project
at Juelich Supercomputing Centre (http://www.fz-juelich.de/jsc/kojak)
Staff at ZIH:
Matthias Jurenz
Andreas Knuepfer
Ronny Brendel
Matthias Lieber
Jens Doleschal
Thomas Ilsche
Joachim Protze
Holger Mickler
Michael Heyde
Robert Dietrich
Robert Schoene
Matthias Mueller
Staff at HLRS:
Rainer Keller

Просмотреть файл

@ -1,36 +0,0 @@
Copyright (c) 2005-2013, ZIH, TU Dresden, Federal Republic of Germany
Copyright (c) 1998-2005, Forschungszentrum Juelich, Juelich Supercomputing
Centre, Federal Republic of Germany
Copyright (c) 2007-2008, High Performance Computing Center Stuttgart,
Federal Republic of Germany
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.
- Neither the name of ZIH, TU Dresden, Forschungszentrum Juelich, Juelich
Supercomputing Centre, or High Performance Computing Center Stuttgart, nor the
names of its contributors may be used to endorse or promote products derived
from this software without pecific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Просмотреть файл

@ -1,966 +0,0 @@
5.14.4openmpi
- fixed build issues due to API changes in MPI-3
- removed non-posix call to length(array) in AWK script for generating
the C MPI wrapper functions
- fixed potential buffer overflow when reading the filter file
- fixed build error when the CUDA runtime API wrapper are enabled and
CUPTI is disabled
- enabled access to CUPTI counters for CUDA tracing via CUPTI
- enabled GPU memory usage tracing independent of the CUDA API
- enabled recording of CUDA synchronization and implicit synchronization in
blocking CUDA memory copies for CUDA tracing via CUPTI
- enabled recording of synchronous peer-to-peer CUDA memory copies for CUDA
tracing via CUPTI
- consider CUDA data transfers as not idle for option 'pure_idle'
- fixed identification of the CUDA device ID for CUDA tracing via CUPTI
- fixed region filtering for applications using the CUDA runtime API wrapper
- compiler wrappers: add path to mpi.h to the PDT parser command and
preprocessor flags
5.14.3openmpi
- updated version of internal OTF to 1.12.3openmpi
(see extlib/otf/ChangeLog)
- fixed build error when using the Intel MPI compiler wrappers
- prepend cross-prefix to the compiler wrappers *only* if
'--with-cross-prefix[=PREFIX]' is given
- fixed passing FCFLAGS to the Fortran compiler when building libvt-fmpi
- temporary disabled memory allocation tracing for multi-threaded
applications (introduced in v5.14.1) due to broken counter values
when memory is freed in a different thread than where it was allocated
- fixed a potential minor bug in CUPTI activity stream handling
- workaround for CUDA 5.0 bug: do not call cuDeviceSynchronize(), if
stream reuse is enabled and a CUDA stream is about to be destroyed
- fixed segmentation fault when writing intermediate statistics
(VT_STAT_INTV != 0)
- vtdyn: do not instrument regions where using a trap is required
- plugin counters: Merge a set of post-mortem counters and write them
under a single async key. This speeds up the unification.
- vtsetup: fixed availability state of the exec tracing feature
5.14.2openmpi
- fixed build error occurred if VT is configured with exec tracing
enabled, but with memory allocation tracing disabled
- fixed infinite recursion in the realloc wrapper initiated by dlerror
- fixed assertion error occurred when MPI_Initialized is the very first
event to be recorded
- fixed potential stack underflow when tracing only MPI events of a
multithreaded program
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"
- compiler wrappers:
- removed invocation of pdbcomment; it removes essential
information from the PDB file for instrumenting functions
5.14openmpi
- updated version of internal OTF to 1.12.1openmpi
(see extlib/otf/ChangeLog)
- added support for filtering functions of specific call paths
- introduced new environment variable VT_MPI_IGNORE_FILTER to
enable/disable recording of MPI communication events although its
corresponding functions are filtered
- fixed undefined reference error for vt_get_mpi_f_in_place___ when
linking the Fortran MPI wrapper library (libvt-fmpi) built for
SGI-MPT (--with-sgimpt)
- compiler wrappers:
- added option '-vt:inst-exclude-file[-list]' to exclude source
files from the automatic instrumentation by the compiler or
PDT/TAU
- added option '-vt:opari-exclude-file[-list]' to exclude source
files from the instrumentation of OpenMP constructs by OPARI
- consider preprocessed files (-vt:preprocess) for reuse
(-vt:reusefiles)
- do additionally scan for comments (pdbcomment) if performing
PDT/TAU instrumentation to prevent instrumenting functions
within comments
- OPARI: (see tools/opari/ChangeLog:26,27)
5.13.2
- added support for IBM BlueGene/Q
- added support for PAPI 5 (aka PAPI-V)
- fixed CUDA runtime API wrapper for CUDA 5
- fixed "Cannot find communicator" error occurred when completing
a non-blocking MPI communication using an already freed communicator
(e.g. MPI_Irecv(...,comm,...), MPI_Comm_free(comm), MPI_Wait())
- fixed 'gnu' compiler instrumentation for functions defined within
shared objects
- vtunify:
- disable OpenMP parallelization if PGI compiler version < 9
is used (threadprivate not supported)
- OPARI: (see tools/opari/ChangeLog:24,25)
5.13.1
- updated version of internal OTF to 1.11.2goldfish
(see extlib/otf/ChangeLog)
- use high precision timer RTC on Cray XE/XK6 platforms using the
Cray compiler
- fixed parsing symbol list file given by VT_GNU_NMFILE if it is
generated by nm with multiple input files
- compiler wrappers:
- added detection of Cray compiler's OpenMP flag (-h omp) to
enable OPARI instrumentation
- add OPARI option '-nosrc' when using the Cray compiler
(at least the Fortran compiler does not understand
#line constructs)
- vtnvcc:
- add path to cuda.h to the PDT parser command
- exclude *.cu source files from instrumenting with
PDT/TAU; the PDT parser is not (yet) able to handle
CUDA statements and kernels
- vtunify[-mpi]:
- fixed timestamp boundary check for merging asynchronous
plugin counters
- enhanced precision of timestamp conversion from local
to global
5.13
- updated version of internal OTF to 1.11.1goldfish
(see extlib/otf/ChangeLog)
- added support for highly parallel trace writing using the
I/O Forwarding Scalability Layer (IOFSL) with atomic append
aggregation
- added support for generating snapshots which allows Vampir to load
subsets of the resulting trace
- introduced new vtfort compiler wrapper for compiling *any* Fortran
code (Fortran 77, 90, 2003, etc.)
(vtf77 and vtf90 still exist, but they are symlinks to vtfort)
- added support for automatic instrumentation with Cray CCE compiler
- improved compiler instrumentation support for IBM XLC/XLF compilers
version 11/13
- introduced environment variable VT_GPUTRACE, which replaces several
CUDA tracing environment variables
- added option to enable CUDA stream reuse
- expose flush of CUPTI activities as measurement overhead
- added CUDA runtime API functions to CUDA runtime API wrapper, which
are new in CUDA 4.2 and 5.0.7 (preview release)
- extended function filter capabilities by
- recursive filtering (disables recording callees of
filtered function)
- function group filtering
- stack level filtering
- vtdyn:
- added support for instrumenting loops
- try to get the full prototype of functions to be instrumented
- print verbose messages to stderr if started by the Dyninst
attach library (libvt-dynatt)
- vtunify[-mpi]:
- removed strict order of command line parameters
- print verbose messages to stderr if started automatically
- added compatibility check for input trace file generated
by a different VampirTrace version
- drop/adapt records which have references to processes
disabled by the process filter
- count message matching irregularities
(i.e. number of unmatched and reversed messages)
- fixed a Heisenbug in conversion of local to global timestamps
(occurred when using the Intel compiler with O2 or higher
optimization)
- compiler wrappers:
- added option '-vt:reusefiles' to reuse kept intermediate
files generated by a previous run of OPARI and/or PDT/TAU
- added option '-vt:keepfiles' as synonym for '-vt:nocleanup'
- fixed preprocessing of OpenMP source files
- vtnvcc: fixed forwarding of compiler/linker options
- fixed handling of 'errno' in LIBC[-I/O] wrappers on AIX
- fixed handling of MPI_Aint in MPI-2 Fortran wrappers
(MPI_Aint=INTEGER(KIND=MPI_ADDRESS_KIND))
- do not abort if the application requests the MPI thread support level
MPI_THREAD_SERIALIZED or MPI_THREAD_MULTIPLE
(disable recording of MPI communication events instead)
- fixed GPU compute idle time measurement with CUPTI activity tracing
- fixed installation issue when prefix is set to the source directory
(e.g. ./configure --prefix=$PWD)
- fixed handling of unidirectional collective operations (e.g. broad-
cast, gather, scatter) using intercommunicators
- fixed hanging mutatee when using binary instrumentation from an
Intel-built VampirTrace installation
- OPARI: (see tools/opari/ChangeLog:23)
5.12.2
- updated version of internal OTF to 1.10.2coelacanth
(see extlib/otf/ChangeLog)
- added support for CUDA tracing via CUPTI callbacks and activities
(runtime and driver API, kernels, memory copies and GPU memory usage)
- added support for cudaMemcpyDefault and synchronous peer-to-peer
memory copies in CUDA library wrapper
- added configure switches to enable/disable CUPTI and CUDA wrapping
- fixed a bug in CUDA runtime wrapper initialization and thread creation
- fixed a build bug occurred if CUDA and CUPTI found, but support for
library tracing was disabled
- fixed platform detection on BlueGene when configuring for the frontend
- fixed detection of Cray compiler's OpenMP flag in configure
- fixed detection of C++ runtime libraries for Cray and PGI 11.x compilers
- fixed detection of MPI_IN_PLACE in configure
- do not use RTLD_DEFAULT handle for dlsym() on CrayX? platforms;
it's provided by dlfcn.h but not working (segmentation fault)
- fixed conversion from MPI_Fint-arrays to MPI_Aint-arrays in Fortran
MPI wrappers
- temporary removed MPI_<Comm|Type|Win>_<get|set>_attr and
MPI_Attr_<get|put> from the Fortran MPI wrappers due to missing
conversion of the attribute value parameter
- fixed handling of empty MPI groups (MPI_GROUP_EMPTY)
- fixed handling of MPI groups implicitly generated by MPI_Win_create
- fixed order of OpenMP threads based on its id (omp_get_thread_num)
- fixed parsing of filter file to consider non-rank-specific filter
rules appearing after a rank selection for disabling
- fixed handling of 'errno' in LIBC[-I/O] wrappers for statically linked
applications
- fixed parsing of PAPI native events in VT_METRICS
- vtunify[-mpi]:
- fixed possibly uninitialized global token for the predefined
Node and "All" process groups
- fixed potential memory corruption during enqueuing recv.
messages for p2p message matching
- vtunify-mpi:
- fixed assertion in p2p message matching which occurred when
processing local traces with disabled ranks
- vtdyn:
- load user-specified shared libraries (-s SHLIB) into the
mutatee before starting the instrumentation; adds support for
instrumenting shared libraries which are loaded during runtime
- compiler wrappers:
- fixed detection of MPI library linked in the path form
(e.g. libmpi.a instead of -lmpi)
- fixed corrupt library order when using vtnvcc for linking
MPI/CUDA mixed programs
- OPARI: (see tools/opari/ChangeLog:22)
5.12.1
- updated version of internal OTF to 1.10.1coelacanth
(see extlib/otf/ChangeLog)
- fixed detection of Open64 compilers for automatic instrumentation
- fixed build issues on MacOS using GCC v4.2
- fixed non-increasing timestamps when flushing the trace buffer
- fixed a bug in the MPI wrapper functions MPI_Gatherv and MPI_Scatterv
which occurred due to illegal access to insignificant parameters on
non-root ranks
- vtunify-mpi:
- added option '--stats' to unify only summarized information,
no events
- reduced memory usage
- OPARI: (see tools/opari/ChangeLog:20,21)
5.12
- updated version of internal OTF to 1.10coelacanth
(see extlib/otf/ChangeLog)
- added support for CUDA runtime tracing via CUPTI callbacks
- added support for process group counters
- extended internal API to:
- create process groups
- assign attributes to process groups
(e.g. is communicator, has counters)
- improved MPI group/communicator handling:
- merge groups which have the same members to one group
- name groups to "MPI Group X"
- added writing of process begin/end records
- added support for LIBC [I/O] tracing on Cray XT platforms
- added environment variable VT_ONOFF_CHECK_STACK_BALANCE to
enable/disable check for stack level balance when switching tracing
on/off by using the user API
- added configure option '--[enable|disable]-fortran' to control
building of Fortran support
- install a symbolic link 'vtfiltergen[-mpi]' which is a synonym for
'vtfilter[-mpi] --gen'
- if possible, get resource usage counters for the calling thread
instead of the process
- disabled unnecessary time synchronization on NEC SX platforms
- removed MPI_Address and MPI_Get_address from MPI wrappers
- removed limitation of maximum defined MPI handles (groups, comms.,
and windows) in a MPI program
- fixed incorrect handling of MPI_IN_PLACE
- fixed erroneous handling of MPI_Aint within the Fortran MPI wrappers
- fixed incomplete tracking of MPI inter-communicators
- fixed error handling on flushing the trace buffer
- fixed potential memory corruption when flushing the trace buffer
multiple times (VT_MAX_FLUSHES != 1)
- fixed numbering in thread names
- vtunify:
- fixed parsing of negative time offsets within unify
control data
- vtdyn:
- detach from application process before continuing its
execution (allows signal trapping (e.g. Ctrl+C) within the
application)
- fixed selection of functions to be instrumented
- save floating point registers before calling instrumentation
to ensure correct program behavior
- compiler wrappers:
- added options '-vt:preprocess', '-vt:cpp', and '-vt:cppflags'
to preprocess source files before parsing by OPARI and/or TAU
- added options '-vt:opari-rcfile' and '-vt:opari-table' to set
pathnames of the OPARI resource and runtime table file
- added option '-vt:nocleanup' to keep intermediate files
- vtrun:
- do preload Dyninst runtime library (DYNINSTAPI_RT_LIB) when
instrumenting user functions by Dyninst
- vtsetup: (see tools/vtsetup/ChangeLog:1.0.1)
5.11.2
- updated version of internal OTF to 1.9.2sawfish
(see extlib/otf/ChangeLog)
- added options '-vt:showme-<compile|link>' to the compiler wrapper
to show the compiler/linker flags that would be supplied to the
underlying compiler
- add path to MPI library when linking with the compiler wrappers
- do not build vtrun script on BlueGene; shell scripts doesn't work on
the back-end
- fixed segmentation fault in vtunify-mpi which might occur during
gathering local marker definitions/spots to master process
5.11.1
- updated version of internal OTF to 1.9.1sawfish
(see extlib/otf/ChangeLog)
- process and thread buffer size can be explicitly specified by the user
via the environment variables VT_BUFFER_SIZE and VT_THREAD_BUFFER_SIZE
- improved filtering of CUDA kernels
- enhanced creating global definitions in vtunify
- fixed CUDA kernel launch configuration
- fixed unification of local process group definitions
- fixed wrapper generation for MPI implementations which don't support
the MPI-2 standard
- fixed faulty cleanup of temporary files in vtunify which occurred if
VT is configured without trace compression support
- fixed detection of OpenMP flag '-qsmp=*:omp:*' in the compiler
wrappers
- fixed C++ linker issue for manual instrumentation of multiple files
- bugfix to OPARI (see tools/opari/ChangeLog:19)
5.11
- updated version of internal OTF to 1.9sawfish
(see extlib/otf/ChangeLog)
- added support for Cray XE6
- added tool 'vtsetup' which provides a GUI to prepare measurement runs
with VampirTrace
- added application execution wrapper script 'vtrun' which performs MPI
and/or binary instrumentation at runtime
- extended Dyninst mutator tool 'vtdyn' to rewrite instrumented
application executables
- replaced basic blacklist functionality of vtdyn by the VT runtime
filter
- extended trace unification to match p2p message event records
- enhanced unification of local traces from very large runs in respect
of parallelism and memory usage
- extended user API to perform user defined communication
- extended user API for regions to support dynamically generated region
names
- added support for asynchronous plugin counters
- added support for CUDA 4.0
- removed support for CUDA 2.x
- added CUDA performance counter support via CUPTI event API
- added option '-vt:noopari' to compiler wrapper commands to disable
instrumentation of OpenMP constructs by OPARI
- added configure option
'--with-wrapper-<cc|cxx|f77|fc|nvcc>-default-partype=TYPE' to set
default application parallelization type for compiler wrappers
- fixed thread-safety issue in Fortran bindings of user API
- fixed handling NULL value of pathname given to certain I/O calls
(e.g. fopen, open, unlink)
- fixed base of cycle counter timer on PPC with MacOS
- fixed default grouping of user functions whose name appears in
predefined groups (e.g. VT-API)
- fixed error when using the compiler wrappers with PDT/TAU + manual
instrumentation
- bugfix to OPARI (see tools/opari/ChangeLog:18)
5.10.1
- updated version of internal OTF to 1.8.1sturgeon
(see extlib/otf/ChangeLog)
- added configure option '--<en|dis>able-mpiunify-lib' to control
building of the MPI trace unification library (libvt-mpi-unify)
- added GPU memory tracing for CUDA runtime API
- fixed configure tests for conversion of Fortran MPI handles
- fixed collecting symbol information of shared libraries which are
instrumented by the GNU, Intel, PathScale, or PGI 9 compiler
- fixed an error in memory management of CUDA devices
- fixed CUDA device management (CUDA runtime)
- fixed finalize problem in CUDA runtime wrapper, which in cases
produced an unspecific driver error
- added an additional check to avoid a possible deadlock in vt_open(),
which might occur, if something during opening invokes vt_open()
- fixed not-increasing timestamps error which occurred if an interval
for writing statistics (env. VT_STAT_INTV) is set
- fixed wrong UNIMCI language bindings for Fortran applications
(enforces building of the Fortran MPI wrapper library 'libvt-fmpi')
- fixed handling of command line options in vtjava
5.10
- updated version of internal OTF to 1.8sturgeon
(see extlib/otf/ChangeLog)
- added support for automatic source code instrumentation by PDT/TAU
- added MPI-parallel version of vtfilter (vtfilter-mpi) with support
for rank specific filtering
- enhanced termination of MPI-parallel trace unifier in case of an error
- changed byte counts of collective communication records
(see FAQ entry D.8 in the user manual)
- added changes of CUDA 3.2 runtime API
- extended vtjava to set the trace file prefix to the jar/class file
- fixed compile error on Red Hat 5.x which occurred if using GNU
compiler with -D_FORTIFY_SOURCE=2
- fixed faulty library dependencies to MPI which caused in a
segmentation fault on AIX
(on AIX libvt-fmpi needs additional dependencies to the Fortran
runtime libraries; for now building of shared libraries is disabled)
- fixed a potential segmentation fault in CUDA runtime API tracing
(for disabled CUDA kernel tracing and CUDA synchronization level 3)
- usage of CUDA and PAPI does not result in an error any more
- fixed measurement of GPU idle time
- corrected number of used CUDA events for disabled kernel tracing
- fixed corrupt call stack after an intermediate buffer flush if
VT_MAX_FLUSHES is set to 0(=unlimited)
- fixed detection of executable's pathname on UnionFS
- fixed detection of OpenMP flags in the compiler wrappers
- fixed memory source/destination overlap in a MPI_Gatherv call which
caused MPICH2 to abort
- fixed potential segmentation fault during collecting symbol
information for instrumentation with the GNU, Intel, PathScale,
and PGI 9 compiler
- fixed segmentation fault which occurred if using PAPI 4 together with
libc I/O tracing
- fixed pathname of the JVMTI agent library in vtjava
- fixed assertion in vtunify which occurred if enhanced time sync. is
enabled
- fixed segmentation fault in vtunify-mpi which occurred if using more
MPI tasks than necessary
5.9
- updated version of internal OTF to 1.7.1catfish
(see extlib/otf/ChangeLog)
- added support for tracing NVIDIA CUDA runtime API
- improved automatic trace unification for MPI applications:
use application allocated MPI processes for unification
- extended user API: added "buffer rewind" as an alternative to "on/off"
- extended the MPI-rank specific filtering to disable ranks completely
- added environment variable VT_OMPTRACE to enable/disable tracing of
OpenMP events instrumented by OPARI
- added writing of collective begin/end records for MPI Collective
operations
- reduced amount of resulting files:
- write only one unify control file (*.uctl) for the whole trace
- do not write *.filt files anymore
- added environment variables VT_MAX_MPI_COMMS and VT_MAX_MPI_WINS for
adjusting internal default limits of used MPI communicators/windows
- corrected finalize behavior for C++ applications with static objects
(e.g. MPI_Finalize in the destructor of a singleton)
- fixed potential buffer overflow on determining pathname of the
application executable
- fixed loading of dynamic libraries on AIX
- fixed bugs in the compiler wrappers:
- don't try to rename the compiler output of an OPARI modified
source file if it's specified by the compiler flag '-o'
- changed order of linking libraries to record also MPI function
calls which come from user libraries
- corrected parsing of separated arguments of the compiler
options -I, -L, and -l (e.g. -I <dir>)
- fixed bug in vtunify: do only write active stream/process ids to the
OTF master control file (*.otf)
- if configuring inside Open MPI, install header files into
<includedir>/vampirtrace even the configure option '--includedir' is
specified
5.8.2
- fixed buffer overflow which occurred if marker or event comment
records generated
- fixed bug in MPI-I/O tracing: tracking MPI file handles even if
MPI_File_open isn't recorded
5.8.1
- updated version of internal OTF to 1.6.5stingray
(see extlib/otf/ChangeLog)
- added support for tracing functions in shared libraries instrumented
by the GNU, Intel, PathScale, or PGI 9 compiler
- extended support for BlueGene/P in terms of tracing libraries
(e.g. libc I/O) and tracing of multi-threaded applications
- added default option file for CrayXT platforms
- added support for PAPI-C counters which belong to different components
- added environment variable VT_METRICS_SEP to specify a string which
separate the counter names in VT_METRICS
- extended usability of environment variable VT_METRICS for PAPI
counters to specifiy whether a counter provides increasing or
absolute values
- added support for "re-locate" an existing VampirTrace installation
without re-build it from source
- fixed configure's version detection for PAPI to support version 4.x
- added configure tests for a few pthread functions which do not exist
on some platforms
- added configure tests to detect Bull MPICH2
- use Open MPI provided Fortran wrapper library 'libmpi_f77'
- added functions 'MPI_Group_range_<incl|excl>' to Fortran MPI wrappers
- use more portable 'nm' command instead of the BFD library to collect
symbol information for instrumentation with the GNU, Intel, PathScale,
and PGI 9 compiler
- do not shutdown call stack if maximum number of buffer flushes was
reached, because the additional leaves suggest a wrong application
flow
- fixed potential stack underflow in vtfilter which might be cause a
segmentation fault
- fixed detection of unique node id on MacOS platforms
- fixed support for LAM/MPI
- fixed potential segmentation fault in vtunify-mpi which might occur
on 32bit platforms
- patched libtool to avoid a bug in detection of the PGI 10 compilers
5.8
- updated version of internal OTF to 1.6.4stingray
(see extlib/otf/ChangeLog)
- added support for tracing calls to arbitrary third party libraries
The new tool 'vtlibwrapgen' can be used to generate a wrapper library.
- extended the region filter mechanism to allow MPI-rank specific
filter directives
- added support for automatic instrumentation with PGI 9 compiler using
its new compiler flag '-Minstrument'
- added MPI-parallel trace unifier (vtunify-mpi)
- disabled simultaneous support for multiple compiler instrumentation
types in one VampirTrace installation
(all known compiler instrumentation types for the compiler wrappers
(e.g. gnu,pgi,xl) are summarized by "compinst")
- added wrapper script 'vtjava' which invoke the usual Java application
launcher with the necessary options for tracing
- enhanced creating global definitions in vtunify
- create a process group with the real node name on CrayXT platforms
- fixed a bug which caused incomplete traces if using automatic instr.
for MPI/C++ applications on CrayXT platforms
- fixed erroneous error messaging in libc tracing
- fixed wrong order of attributes in 'vt_def_region'
- fixed erroneous reading of input filter file in vtfilter
5.7
- updated version of internal OTF to 1.6.1stingray
(see extlib/otf/ChangeLog)
- added support for MPI correctness checking by Universal MPI
Correctness Interface (UniMCI)
- added support for automatic instrumentation by using OpenUH compiler
(version 4.0 or higher required)
- added support for Java tracing using JVMTI
- added support for CPU ID tracing (requires GLIBC >= 2.6)
- added support for MPI-2 one-sided communication
- full support for MPI-2 I/O (using I/O begin/end records)
- improved tracing of nested POSIX/OpenMP threads: record parent thread
identifier of each child thread so that the parent-child relationship
will be evident
- improved tracing of POSIX threads: reuse thread identifiers of
terminated threads
- improved memory allocation tracing: write marker for each alloc/free
event which show the allocated/freed bytes
- added environment variable VT_MAX_STACK_DEPTH which can be used to
specify the maximum depth of call stack to record
- extended user API for intermediate time synchronization and buffer
flushes and for updating all counters which specified by the
environment variables VT_METRICS and VT_RUSAGE
- added support email address to assert strings and #error directives
- added writing of I/O begin/end records for LIBC's I/O tracing
- added support for tracing file locking via 'flockfile()', 'lockf()'
and 'fcntl()'
- use handle from dlopen(<libc>) for dlsym() calls instead of RTLD_NEXT
=> LIBC (+I/O) tracing works with statically linked programs now
- added support for cycle counter timer on Alpha and Sparc platforms
- added platform configurartion files that provide several default
options
- added configure check for function '__getReg' which required to use
the ITC timer on IA64/Linux
- added configure check for PAPI's special type 'long_long'
(will be defined, if the header file 'papi.h' doesn't provide this)
- install header files to 'PREFIX/include/vampirtrace' by default to
avoid conflicts with the OpenMPI integrated version of VT
- do not install 'vtCC' and the corresponding config file, if the file
system is case insensitive (e.g. HFS+ on MacOS X)
- added configure option '--with[out]-bfd' to control usage of BFD
library to get symbol information for GNU, Intel, and PathScale
compiler instrumentation
- preselect availability of MPI type converter functions
(e.g. MPI_Comm_f2c), if '--with-openmpi' was given
(further preselections for other MPI implementations will follow)
- fixed detection of Sun Studio compiler for automatic instrumentation
- fixed a bug in GNU demangling of C++ names
- fixed wrong output of dlsym errors in I/O tracing
- fixed faulty searching for matching filter directive
- fixed assertion which might be occurred during tracing applications
using pthreads and recording PAPI counters
- fixed not-increasing counter values for tracing threaded applications
- fixed a bug in Fortran MPI wrappers: added conversion for MPI_BOTTOM
and MPI_IN_PLACE
- fixed Fortran User API for markers
- fixed a bug in vtfilter: strip the '.otf'-suffix from input/output
trace file names, if necessary
- fixed a bug in the Fortran compiler wrappers: don't remove generated
OPARI header files (*.opari.inc) before compiling the table source
- file (opari.tab.c)
- enhancement to OPARI (see tools/opari/ChangeLog:16,17)
- use handle from dlopen(<libc>) for dlsym() calls instead of RTLD_NEXT
- fixed segmentation fault when encountering invalid file descriptors
- use hard limit for maximum number of fds
5.6.3
- updated version of internal OTF to 1.5.2dolphin
(see extlib/otf/ChangeLog)
- added environment variables VT_PFORM_LDIR_CHECK and
VT_PFORM_GDIR_CHECK to enable/disable checking for write access to
the local/global trace directories
- added configure variable 'NM' for the command to list symbols from
object files
- added configure options '--with-mvapich[2]' to set the MPI-libs for
MVAPICH[2]
- added configure check for header file 'asm/intrinsics.h' and
definition of '_IA64_REG_AR_ITC' which required to use the ITC timer
on IA64/Linux
- added support for demangling of C++ names also if the header file
'demangle.h' is not available
- do not build shared libraries on IBM BlueGene
- replaced usage of PATH_MAX by VT_PATH_MAX to avoid compile errors
on some platforms
- fixed compile error which occurred if support for enhanced time
synchronization enabled and using the Sun Performance Library from
Sun Studio 12
- fixed compile error on RedHat/CentOS due to missing header include
of 'cctype.h' in the sources of 'vtunify'
- fixed a bug in the compiler wrappers: add compiler flag '-I.' for
compiling OPARI modified sources in subdirectories in order to find
the corresponding OPARI include files
- fixed a bug in the compiler wrappers for Fortran: do not mix C flags
(especially the pthread flag '-D_THREAD_SAFE' for IBM compilers) with
Fortran compiler flags
- fixed faulty timer selection in configure
(the cycle counter timer is not available on all Linux platforms)
- fixed detection of Sun Studio compilers on Linux
(related to the automatic instrumentation)
- patch libtool to avoid a bug in detection of the Sun Studio Fortran
compiler
- fixed missing definition of vt_node_id in vt_pform_sun
- added wrapper for 'pthread_exit' for correct decomposition of the
call stack
- fixed I/O calls not being affected by region filters
- disabled recording of I/O events from within filtered out functions
- disabled recording of MPI messages from within filtered out functions
- check return value of MPI_Get_count in status handling
5.6.2
- replaced all dots in library names by dashs in order to avoid a
naming problem in libtool and for more consistent
- added dependencies to all necessary libraries (e.g. PAPI, BFD, etc.)
to the shared VT libraries
- changed default of VT_PFORM_LDIR to '.' on SiCortex platforms
- fixed use of gethostid() that may fail without error -> check return
value and retry
- use 1 MB buffer for copying traces from local to global destination,
may be tuned by VT_COPY_BUFFER_SIZE
5.6.1
- updated version of internal OTF to 1.5.1dolphin
(see extlib/otf/ChangeLog)
- added support for building shared libraries
- fixed compile error which occurred if configure was unable to find
MPI2 I/O support
- fixed compile error due to missing header include in the sources of
the compiler wrappers
- fixed faulty calculation of unique node id on SUN Solaris platforms
- fixed compiler flags for building OPARI's table object file
- fixed a bug which could prevent LIBC's I/O tracing
5.6
- updated version of internal OTF to 1.5 (see extlib/otf/ChangeLog)
- enhanced time synchronization
- added support for MPI-2 extended collective operations
- added support for recording statistics of MPI collective operations
- added support for hardware performance counters on NEC SX platforms
- added support for POSIX threads
- extended user API to record user-defined markers
- added wrapper for MPI function 'MPI_Init_thread'
- fixed faulty calculation of sent/received bytes for MPI_Bcast
5.5.4
- added support for OpenMP on BlueGene/P
- fixed invalid conversion from 'const char*' to 'char*' in macro
'VT_TRACER'
5.5.3
- updated version of internal OTF to 1.4.1 (see extlib/otf/ChangeLog)
- added support for NEC MPI/SX Fortran 8-Byte Integers
- added support for IBM BlueGene/P
- added configure options '--with-sunmpi[-mt]' to set MPI libs for
SUN MPI
- bugfix: added configure check for I/O functions functions 'fseeko()'
(this function is not available on NEC SX platforms)
- fixed faulty shell comparison in configure which may cause an infinite
loop
- fixed compile error: removed faulty header include for builds
without MPI support
- fixed stack corios during intercepting I/O function 'unlink()'
- fixed stack-level mismatch in regions with tracing disabled (VT_OFF)
in combination with MPI collective operations
- fixed faulty handling of MPI_F_STATUS[ES]_IGNORE in MPI wrapper
functions
5.5.2
- added wrapper for LIBC's I/O function 'unlink()'
- fixed a bug in handling of OpenMP critical sections
- fixed a bug in Fortran MPI wrappers: added conversion of MPI_Aint
5.5.1
- added wrapper functions for 'wait()' and 'waitpid()'
- improved tracing of 'fork()': automatic unifying of local traces
- added support for Cray CNL
- added option '-p' for vtunify to show a progress display during
unifying events
- added configure options to specify the installed MPI-implementation
(e.g. the option '--with-mpich2' sets the MPI-libs for MPICH2)
- fixed not-increasing timestamps during buffer flush
(occurred if memory allocation tracing was enabled)
- fixed missing variable-declarations in Fortran MPI wrappers
- fixed a bug in unique trace file naming which occurred when 'fork()'
used (child process gots a wrong unique file number)
- fixed a bug in vtfilter where the tool dies when a counter appears
outside of function
- enhancement to OPARI (see tools/opari/ChangeLog:15)
5.5
- updated version of internal OTF to 1.4 (see extlib/otf/ChangeLog)
- added support for automatic instrumentation by using PathScale
compiler (version 3.1 or higher required)
- added support for recording function and message statistics
- extended user API for enable/disable tracing
- added wrapper functions for the complete MPI-1.2 standard,
MPI-2 One-Sided Communications, and MPI-2 I/O
- added support for tracing resource usage via 'getrusage()'
- added support for tracing 'fork()', 'system()', and 'exec' functions
- added support for unique trace file naming
- added determining of executable's path, if VT_APPPATH not given
(currently that works *only* for linux, altix, macos, ibm, and sun)
- set default trace file prefix to name of executable (from VT_APPPATH)
- added support for CPC hardware performance counter
- enhanced movement of the local temporary traces (VT_PFORM_LDIR) to
the global directory (VT_PFORM_GDIR), if both directories are on the
same device
- added configure option (--with-cross-prefix) to set a prefix for the
"cross"-executables of the compiler wrappers (e.g. cross-vtcc)
- added configure options (--with-wrapper-<cc|cxx|f77|f90>) to set the
default underlying compiler of the compiler wrappers
- enhancement to OPARI (see tools/opari/ChangeLog:14)
5.4.5
- updated version of internal OTF to 1.3.10 (see extlib/otf/ChangeLog)
- fixed a bug for LIBC's I/O tracing: argument of 'fileno()' must be
a valid file stream
- added configure option '--[enable|disable]-binaries' to control
building of binaries (useful for multi-lib installations)
5.4.4
- updated version of internal OTF to 1.3.9 (see extlib/otf/ChangeLog)
- fixed a portability bug: use own implementation of function
'strdup()'
- removed variadic macros (they were introduced in C99)
- fixed potential race condition by using OpenMP + LIBC's I/O tracing
- fixed potential missing definition records by using OpenMP and the
maximum number of buffer flushes was reached
- fixed a bug in the compiler wrappers: added check for SUN's OpenMP
compiler flag (-xopenmp)
- fixed a bug for determining the timer-resolution for ITC
- added process group definition for MPI communicator MPI_COMM_SELF
- cleanup call stack when maximum number of flushes was reached
- added configure check if we can link '-lz' in order to pass either
'-lotf -lz' or just '-lotf' as OTF link option
- renamed configure's option '--with[out]-mpi-io' to
'[enable/disable]-mpi-io' for more consistent
5.4.3
- bugfix for Fortran compiler wrappers (vtf77, vtf90):
OPARI's table source file (opari.tab.c) will be compiled
with the C compiler and flags which were given for VT's
configure (CC/CFLAGS)
(changeable in vt*-wrapper-data.txt)
- bugfixes in vtunify: - keep user's created process groups
for MPI communicators
- reserve sorting of global process group
definitions
5.4.2
- bugfix for VPATH builds
- added configure check for PAPI version
(only support for version 3.x)
5.4.1
- bugfix: added check for I/O functions which are a part of the large
file extensions (e.g. open64, creat64, ...); disable corresponding
wrapper functions, if system doesn't support these
- added environment variable VT_DEMANGLE to enable/disable GNU
demangling of C++ names (default: disabled, due to a bug in older
versions of the GNU library 'liberty')
- disabled support for I/O tracing on MacOS
5.4.0
- updated version of internal OTF to 1.3.8 (see extlib/otf/ChangeLog)
- added support for user-defined counters
- if available, PAPI cycle counter can be used as timer
(see config.h after configure)
- recording of events will be stopped if the maximum number of
buffer flushes (env. VT_MAX_FLUSHES) was reached
- added support for LIBC's I/O tracing
- improved autoconf's m4 scripts for cross buildings
- default settings for the compiler wrappers will be stored
in share/vampirtrace/vt*-wrapper-data.txt
- vtfilter: - direct filtering without second trace run
- parallelization using OpenMP
5.3.2
- updated version of internal OTF to 1.3.7 (see extlib/otf/ChangeLog)
- improved autoconf's m4 scripts for cross buildings
- added support for VPATH builds
5.3.1
- set default trace call limit for all regions/functions to 100000
5.3.0
- updated version of internal OTF to 1.3.4 (see extlib/otf/ChangeLog)
- added support for automatic instrumentation by using Intel compiler
version 10.x (uses new compiler flag '-finstrument-functions')
- added support for binary instrumentation by using Dyninst
- added support for GLIBC's memory allocation tracing
(see doc/UserManual*)
- bugfix: corrected process id for OpenMP collective operations
- changed default function/region group from 'USR' to 'Application'
- if only MPI-functions are instrumented, then entry-record of
function 'user' will be generated before MPI_Init
- added trace filter generator tool 'vtfilter'
(see doc/USAGE.vtfilter)
- added support for multiple compiler-instrumentations from one
installation of VampirTrace (see INSTALL)
- replaced vtinst, vtinst-pomp, and vtinst-dyn by VT's compiler
wrapper (see doc/UserManual* and doc/USAGE.compinst)
- added simple example applications
- changed install directory of documentations from '$prefix/info'
to '$prefix/share/vampirtrace/doc'
- changed install directory of metrics-, filter-, and grouping
configuration from '$prefix/doc' to '$prefix/share/vampirtrace'
5.2.5
- fixed potentially race condition by tracing OpenMP apps.
- fixed some little memory leaks
- fixed native counter issue on IA64 systems
- added configure check for header files 'stdint.h' and 'inttypes.h';
if none of these files found, then own integer types will be defined
5.2.4
- updated version of internal OTF to 1.2.19 (see extlib/otf/ChangeLog)
- fixed compile error which occurred by using old SUN compilers
- added a configure summary
- added HP MPI support
- renamed Fortran MPI wrapper library to 'libvt.fmpi' to avoid possible
name conflicts
- fixed a bug (integer overflow) in mechanism for getting timer on
Linux systems
5.2.3
- changed install directory of documentations from 'doc' to 'info'
(adjustable by configure option '--infodir')
- forward configure options '--exec-prefix', '--bindir', '--libdir', ',
'--includedir', and '--infodir' to configure command of internal OTF
- added configure check for CPP-Style Fortran preprocessor of gfortran
- added configure check for location of 'mmtimer.h'
- made sure that peers of events (e.g. msg. send enter + msg. send)
have the same timestamp
- clock synchronization can be forced
(see config.h after configure)
5.2.2
- fixed a bug in region filter which occurred by tracing OpenMP apps.
instrumented by compiler (vtinst)
- added option '-k' for vtunify to keep input trace files
5.2.1
- fixed several performance issues
- improved mechanism for getting clock cycles on IBM PPC64 machines
- the user can specify the mechanism which used for getting timer
(only for Linux, SGI Altix, IBM AIX, Cray X1
- see config.h after configure)
5.2.0
- updated version of internal OTF to 1.2.18 (see extlib/otf/ChangeLog)
- replaced build system by GNU Autoconf/Automake
- changed base name (e.g. environment variables, source files) to VT...
(see doc/USAGE)
- added OpenMP support by using OPARI instrumentation tool
- write process group records which contain the location of processes
(node name)
- added tool 'vtconfig' to simplify determining the right compiler and
linker flags
5.1.7
- updated version of internal OTF to 1.2.13
5.1.6
- updated version of internal OTF to 1.2.11
- fixed a bug: record the REAL buffer-length of a MPI non-blocking
receive operation
- added wrapper for MPI function 'MPI_Probe'
- added Open MPI support
- added a simple "configure" command
(see INSTALL)
5.1.5
- fixed a bug in elg_otfunify time synchronization
5.1.4
- updated version of internal OTF to 1.1.9
- fixed a bug in elg_otfunify which occurred if compiled with PGI
and used OMP parallelization
- enhanced progress display of elg_otfunify
5.1.3
- fixed little bugs in build system which occurred if multiple
mode building used (Makefile.32-64)
- added support for clusters of IBM Power3/4 machines
and Linux PPC cluster with IBM compilers
5.1.2
- updated version of internal OTF to 1.1.8
5.1.1
- write list of filtered regions to file (*.x.filt)
- specified flags of 'ar' in Makefile.defs (AFLAG) will
be assign to internal OTF configure script
5.1.0
- counter event record will be wrote before leave event record
- added region filter and grouping managment
5.0.6
- added creator informations of trace file (tracelib, version, date
and time)
- reduced offset of process group token
- improved name of process groups
5.0.5
- fixed a bug in elg_otfunify which occurred if the environment
variable ELG_PFORM_DIR was set
5.0.4
- fixed a bug which occurred on Opteron systems (faulty timestamps)
- made sure that the ids of process groups and processes are
different (for analyzing trace files)
5.0.3
- updated version of internal OTF to 1.1.5
- fixed a bug in GNU compiler interface which might have caused
a segmentation fault during flushing the trace buffer
5.0.2
- updated version of internal OTF to 1.1.4
5.0.1
- updated version of internal OTF to 1.1.3
5.0.0
- initial version

Просмотреть файл

@ -1 +0,0 @@
See doc/UserManual.pdf appendix A on how to install VampirTrace.

Просмотреть файл

@ -1,36 +0,0 @@
Copyright (c) 2005-2013, ZIH, TU Dresden, Federal Republic of Germany
Copyright (c) 1998-2005, Forschungszentrum Juelich, Juelich Supercomputing
Centre, Federal Republic of Germany
Copyright (c) 2007-2008, High Performance Computing Center Stuttgart,
Federal Republic of Germany
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.
- Neither the name of ZIH, TU Dresden, Forschungszentrum Juelich, Juelich
Supercomputing Centre, or High Performance Computing Center Stuttgart, nor the
names of its contributors may be used to endorse or promote products derived
from this software without pecific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Просмотреть файл

@ -1,59 +0,0 @@
ACLOCAL_AMFLAGS = -I config/m4
SUBDIRS = \
extlib \
util \
rfg \
vtlib \
tools \
include \
doc
vtdata_DATA = \
$(top_builddir)/config.log
vtdata_SCRIPTS = \
$(top_builddir)/libtool
vtdatadir = $(datadir)
EXTRA_DIST = \
config_bottom.h \
VERSION \
config/defaults/bgl \
config/defaults/bgp \
config/defaults/bgq \
config/defaults/crayxt \
config/defaults/crayxe \
config/defaults/ibm \
config/defaults/ibm-64 \
config/defaults/sicortex \
config/defaults/sicortex-32 \
config/defaults/sun \
config/defaults/necsx \
config/mpigen/c_dont_generate.txt \
config/mpigen/fortran_dont_generate.txt \
config/mpigen/mpi_standard.h \
config/mpigen/mpi2_1sided.h \
config/mpigen/mpi2_extcoll.h \
config/mpigen/mpi2_file.h \
config/mpigen/mpi2_proc.h \
config/mpigen/mpi2_thread.h \
config/mpigen/mpi2_standard.h \
examples/c/Makefile \
examples/c/Makefile.config \
examples/c/hello.c \
examples/c/mdlbrot.c \
examples/c/pi.c \
examples/c/ring.c \
examples/cxx/Makefile \
examples/cxx/Makefile.config \
examples/cxx/hello.cc \
examples/cxx/pi.cc \
examples/cxx/ring.cc \
examples/fortran/Makefile \
examples/fortran/Makefile.config \
examples/fortran/hello.F \
examples/fortran/pi.F \
examples/fortran/ring.F

Просмотреть файл

Просмотреть файл

@ -1,12 +0,0 @@
VampirTrace
VampirTrace consists of a tool set and a run-time library for instrumentation and tracing of software applications. In particular, it is tailored towards parallel and distributed High Performance Computing (HPC) applications.
The instrumentation part modifies a given application in order to inject additional measurement calls during run-time. The tracing part provides the actual measurement functionality used by the instrumentation calls. By this means, a variety of detailed performance properties can be collected and recorded during run-time.
VampirTrace version is available as open source software under the BSD license, see 'COPYING'. The software comes as a source code package. It can be installed by using autoconf procedures, see 'INSTALL'.
For instructions on how use VampirTrace to instrument application programs so that they produce an OTF event trace when executed, see 'doc/UserManual.pdf'.
Please, report bugs, wishes, and suggestions to
<vampirsupport@zih.tu-dresden.de>.

Просмотреть файл

@ -1 +0,0 @@
5.14.4openmpi

Просмотреть файл

@ -1,45 +0,0 @@
m4_include(config/m4/acinclude.clapack.m4)
m4_include(config/m4/acinclude.compinst.m4)
m4_include(config/m4/acinclude.compwrap.m4)
m4_include(config/m4/acinclude.conf.m4)
m4_include(config/m4/acinclude.cpc.m4)
m4_include(config/m4/acinclude.cross.m4)
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.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.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.metrics.m4)
m4_include(config/m4/acinclude.mpi.m4)
m4_include(config/m4/acinclude.omp.m4)
m4_include(config/m4/acinclude.otf.m4)
m4_include(config/m4/acinclude.papi.m4)
m4_include(config/m4/acinclude.pform.m4)
m4_include(config/m4/acinclude.plugincntr.m4)
m4_include(config/m4/acinclude.pthread.m4)
m4_include(config/m4/acinclude.rusage.m4)
m4_include(config/m4/acinclude.tauinst.m4)
m4_include(config/m4/acinclude.threads.m4)
m4_include(config/m4/acinclude.timer.m4)
m4_include(config/m4/acinclude.mpiunifylib.m4)
m4_include(config/m4/acinclude.unimci.m4)
m4_include(config/m4/acinclude.vtrun.m4)
m4_include(config/m4/acinclude.vtsetup.m4)
m4_include(config/m4/acinclude.zlib.m4)
m4_include(config/m4/acarchive/ax_openmp.m4)
m4_include(config/m4/acarchive/acx_pthread.m4)

Просмотреть файл

@ -1,13 +0,0 @@
CC="blrts_xlc"
CXX="blrts_xlC"
FC="blrts_xlf90"
MPICC="mpixlc"
MPICXX="mpixlcxx"
CC_FOR_BUILD="xlc_r"
CXX_FOR_BUILD="xlC_r"
enable_shared="no"
enable_threads="no"
enable_libtrace="no"
enable_cpuidtrace="no"
with_cross_prefix="blrts_"
with_mpibgl="yes"

Просмотреть файл

@ -1,17 +0,0 @@
CC="bgxlc_r"
CXX="bgxlC_r"
FC="bgxlf95_r"
MPICC="mpixlc_r"
MPICXX="mpixlcxx_r"
CFLAGS="-qtune=450 -qarch=450 -O3 -qstrict"
CXXFLAGS="-qtune=450 -qarch=450 -O3 -qstrict"
CC_FOR_BUILD="xlc_r"
CXX_FOR_BUILD="xlC_r"
CFLAGS_FOR_BUILD="-O3 -qstrict"
CXXFLAGS_FOR_BUILD="-O3 -qstrict"
enable_shared="no"
enable_cpuidtrace="no"
with_cross_prefix="bg"
with_mpibgp="yes"
with_cxxrtlib="-L/opt/ibmcmp/lib/bg/bglib -L/opt/ibmcmp/vacpp/bg/9.0/bglib -libmc++ -lstdc++"
with_shlibc=/lib/libc.so.6

Просмотреть файл

@ -1,20 +0,0 @@
CC="bgxlc_r"
CXX="bgxlC_r"
FC="bgxlf95_r"
MPICC="mpixlc_r"
MPICXX="mpixlcxx_r"
CFLAGS="-O3 -qstrict"
CXXFLAGS="-O3 -qstrict -qminimaltoc"
CC_FOR_BUILD="xlc_r"
CXX_FOR_BUILD="xlC_r"
CFLAGS_FOR_BUILD="-O3 -qstrict"
CXXFLAGS_FOR_BUILD="-O3 -qstrict"
enable_shared="no"
with_cross_prefix="bg"
with_mpibgq="yes"
with_cxxrtlib="-L/opt/ibmcmp/vacpp/bg/12.1/bglib64 -libmc++ -lstdc++"
with_shlibc="/lib64/libc.so.6"
# Disable compiler optimization for the OTF library to work around a
# not yet evaluated segmentation fault occurs when flushing the trace buffer.
with_otf_flags="CFLAGS=-O0"

Просмотреть файл

@ -1,18 +0,0 @@
CC="cc"
CXX="CC"
FC="ftn"
CFLAGS="-O3"
CXXFLAGS="-O3"
FCFLAGS="-O3"
if test x"$XTPE_COMPILE_TARGET" != x; then
CFLAGS="$CFLAGS -target=$XTPE_COMPILE_TARGET"
CXXFLAGS="$CXXFLAGS -target=$XTPE_COMPILE_TARGET"
FCFLAGS="$FCFLAGS -target=$XTPE_COMPILE_TARGET"
fi
CC_FOR_BUILD="gcc"
CXX_FOR_BUILD="g++"
CFLAGS_FOR_BUILD="-O3"
CXXFLAGS_FOR_BUILD="-O3"
enable_shared="no"
with_mpich2="yes"
with_shlibc=/lib64/libc.so.6

Просмотреть файл

@ -1,14 +0,0 @@
CC="cc"
CXX="CC"
FC="ftn"
CFLAGS="-O3"
CXXFLAGS="-O3"
FCFLAGS="-O3"
if test x"$XTPE_COMPILE_TARGET" != x; then
CFLAGS="$CFLAGS -target=$XTPE_COMPILE_TARGET"
CXXFLAGS="$CXXFLAGS -target=$XTPE_COMPILE_TARGET"
FCFLAGS="$FCFLAGS -target=$XTPE_COMPILE_TARGET"
fi
enable_shared="no"
with_mpich2="yes"
with_shlibc=/lib64/libc-2.4.so

Просмотреть файл

@ -1,11 +0,0 @@
CC="xlc_r"
CXX="xlC_r"
FC="xlf90_r"
CFLAGS="-O2 -qsuppress=1500-030"
CXXFLAGS="-O2 -qstaticinline -qrtti -qsuppress=1500-029:1500-030"
FCFLAGS="-O2 -qsuppress=cmpmsg"
OPENMP_CFLAGS="-qsmp=omp"
PTHREAD_CFLAGS="-D_THREAD_SAFE"
PTHREAD_LIBS="-lpthreads"
enable_shared="no"
enable_cpuidtrace="no"

Просмотреть файл

@ -1,13 +0,0 @@
AR="ar -X64"
NM="nm -B -X64"
CC="xlc_r"
CXX="xlC_r"
FC="xlf90_r"
CFLAGS="-q64 -O2 -qsuppress=1500-030"
CXXFLAGS="-q64 -O2 -qstaticinline -qrtti -qsuppress=1500-029:1500-030:1501-201"
FCFLAGS="-q64 -O2 -qsuppress=cmpmsg"
OPENMP_CFLAGS="-qsmp=omp"
PTHREAD_CFLAGS="-D_THREAD_SAFE"
PTHREAD_LIBS="-lpthreads"
enable_shared="no"
enable_cpuidtrace="no"

Просмотреть файл

@ -1,24 +0,0 @@
AR="sxar"
CC="sxcc"
CXX="sxc++"
FC="sxf90"
CCAS="sxas"
MPICC="sxmpicc"
MPICXX="sxmpic++"
MPIFC="sxmpif90"
CC_FOR_BUILD="cc"
CXX_FOR_BUILD="c++"
RANLIB="echo"
CFLAGS="-Csopt"
CXXFLAGS="-Csopt"
FCFLAGS="-Csopt"
CFLAGS_FOR_BUILD="-O2"
CXXFLAGS_FOR_BUILD="-O2"
OPENMP_CFLAGS="-Popenmp"
PTHREAD_LIBS="-lpthread"
enable_shared="no"
enable_libtrace="no"
enable_cpuidtrace="no"
enable_metrics="necsx"
with_cross_prefix="sx"
with_mpisx="yes"

Просмотреть файл

@ -1,13 +0,0 @@
CC="scpathcc"
CXX="scpathCC"
FC="scpathf95"
MPICC="scmpicc"
MPIFC="scmpif77"
CC_FOR_BUILD="gcc"
CXX_FOR_BUILD="g++"
OPENMP_CFLAGS="-mp"
PTHREAD_CFLAGS="-pthread"
enable_fmpi_lib="yes"
with_mpi_lib="-lscmpi"
with_pmpi_lib="-lscmpi"
with_cross_prefix="sc"

Просмотреть файл

@ -1,18 +0,0 @@
CC="scpathcc32"
CXX="scpathCC32"
FC="scpathf9532"
MPICC="scmpicc32"
MPIFC="scmpif7732"
CFLAGS="-mabi=n32"
CXXFLAGS="-mabi=n32"
FCFLAGS="-mabi=n32"
CC_FOR_BUILD="gcc"
CXX_FOR_BUILD="g++"
CFLAGS_FOR_BUILD="-m32"
CXXFLAGS_FOR_BUILD="-m32"
OPENMP_CFLAGS="-mp"
PTHREAD_CFLAGS="-pthread"
enable_fmpi_lib="yes"
with_mpi_lib="-lscmpi"
with_pmpi_lib="-lscmpi"
with_cross_prefix="sc"

Просмотреть файл

@ -1,10 +0,0 @@
CC="cc"
CXX="CC"
FC="f95"
CFLAGS="-xO3"
CXXFLAGS="-xO3"
FCFLAGS="-xO3"
OPENMP_CFLAGS="-xopenmp -xO3 -D_REENTRANT"
PTHREAD_CFLAGS="-D_REENTRANT"
PTHREAD_LIBS="-lpthread"
enable_cpuidtrace="no"

Просмотреть файл

@ -1,238 +0,0 @@
dnl @synopsis ACX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
dnl
dnl @summary figure out how to build C programs using POSIX threads
dnl
dnl This macro figures out how to build C programs using POSIX threads.
dnl It sets the PTHREAD_LIBS output variable to the threads library and
dnl linker flags, and the PTHREAD_CFLAGS output variable to any special
dnl C compiler flags that are needed. (The user can also force certain
dnl compiler flags/libs to be tested by setting these environment
dnl variables.)
dnl
dnl Also sets PTHREAD_CC to any special C compiler that is needed for
dnl multi-threaded programs (defaults to the value of CC otherwise).
dnl (This is necessary on AIX to use the special cc_r compiler alias.)
dnl
dnl NOTE: You are assumed to not only compile your program with these
dnl flags, but also link it with them as well. e.g. you should link
dnl with $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS
dnl $LIBS
dnl
dnl If you are only building threads programs, you may wish to use
dnl these variables in your default LIBS, CFLAGS, and CC:
dnl
dnl LIBS="$PTHREAD_LIBS $LIBS"
dnl CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
dnl CC="$PTHREAD_CC"
dnl
dnl In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute
dnl constant has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to
dnl that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
dnl
dnl ACTION-IF-FOUND is a list of shell commands to run if a threads
dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands to
dnl run it if it is not found. If ACTION-IF-FOUND is not specified, the
dnl default action will define HAVE_PTHREAD.
dnl
dnl Please let the authors know if this macro fails on any platform, or
dnl if you have any other suggestions or comments. This macro was based
dnl on work by SGJ on autoconf scripts for FFTW (www.fftw.org) (with
dnl help from M. Frigo), as well as ac_pthread and hb_pthread macros
dnl posted by Alejandro Forero Cuervo to the autoconf macro repository.
dnl We are also grateful for the helpful feedback of numerous users.
dnl
dnl @category InstalledPackages
dnl @author Steven G. Johnson <stevenj@alum.mit.edu>
dnl @version 2005-06-15
dnl @license GPLWithACException
AC_DEFUN([ACX_PTHREAD], [
AC_REQUIRE([AC_CANONICAL_HOST])
AC_LANG_SAVE
AC_LANG_C
acx_pthread_ok=no
# We used to check for pthread.h first, but this fails if pthread.h
# requires special compiler flags (e.g. on True64 or Sequent).
# It gets checked for in the link test anyway.
# First of all, check if the user has set any of the PTHREAD_LIBS,
# etcetera environment variables, and if threads linking works using
# them:
if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
save_LIBS="$LIBS"
LIBS="$PTHREAD_LIBS $LIBS"
AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes)
AC_MSG_RESULT($acx_pthread_ok)
if test x"$acx_pthread_ok" = xno; then
PTHREAD_LIBS=""
PTHREAD_CFLAGS=""
fi
LIBS="$save_LIBS"
CFLAGS="$save_CFLAGS"
fi
# We must check for the threads library under a number of different
# names; the ordering is very important because some systems
# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
# libraries is broken (non-POSIX).
# Create a list of thread flags to try. Items starting with a "-" are
# C compiler flags, and other items are library names, except for "none"
# which indicates that we try without any flags at all, and "pthread-config"
# which is a program returning the flags for the Pth emulation library.
acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
# The ordering *is* (sometimes) important. Some notes on the
# individual items follow:
# pthreads: AIX (must check this before -lpthread)
# none: in case threads are in libc; should be tried before -Kthread and
# other compiler flags to prevent continual compiler warnings
# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
# -pthreads: Solaris/gcc
# -mthreads: Mingw32/gcc, Lynx/gcc
# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
# doesn't hurt to check since this sometimes defines pthreads too;
# also defines -D_REENTRANT)
# ... -mt is also the pthreads flag for HP/aCC
# pthread: Linux, etcetera
# --thread-safe: KAI C++
# pthread-config: use pthread-config program (for GNU Pth library)
case "${host_cpu}-${host_os}" in
*solaris*)
# On Solaris (at least, for some versions), libc contains stubbed
# (non-functional) versions of the pthreads routines, so link-based
# tests will erroneously succeed. (We need to link with -pthreads/-mt/
# -lpthread.) (The stubs are missing pthread_cleanup_push, or rather
# a function called by this macro, so we could check for that, but
# who knows whether they'll stub that too in a future libc.) So,
# we'll just look for -pthreads and -lpthread first:
acx_pthread_flags="-pthreads pthread -mt -pthread $acx_pthread_flags"
;;
esac
if test x"$acx_pthread_ok" = xno; then
for flag in $acx_pthread_flags; do
case $flag in
none)
AC_MSG_CHECKING([whether pthreads work without any flags])
;;
-*)
AC_MSG_CHECKING([whether pthreads work with $flag])
PTHREAD_CFLAGS="$flag"
;;
pthread-config)
AC_CHECK_PROG(acx_pthread_config, pthread-config, yes, no)
if test x"$acx_pthread_config" = xno; then continue; fi
PTHREAD_CFLAGS="`pthread-config --cflags`"
PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
;;
*)
AC_MSG_CHECKING([for the pthreads library -l$flag])
PTHREAD_LIBS="-l$flag"
;;
esac
save_LIBS="$LIBS"
save_CFLAGS="$CFLAGS"
LIBS="$PTHREAD_LIBS $LIBS"
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
# Check for various functions. We must include pthread.h,
# since some functions may be macros. (On the Sequent, we
# need a special flag -Kthread to make this header compile.)
# We check for pthread_join because it is in -lpthread on IRIX
# while pthread_create is in libc. We check for pthread_attr_init
# due to DEC craziness with -lpthreads. We check for
# pthread_cleanup_push because it is one of the few pthread
# functions on Solaris that doesn't have a non-functional libc stub.
# We try pthread_create on general principles.
AC_TRY_LINK([#include <pthread.h>],
[pthread_t th; pthread_join(th, 0);
pthread_attr_init(0); pthread_cleanup_push(0, 0);
pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
[acx_pthread_ok=yes])
LIBS="$save_LIBS"
CFLAGS="$save_CFLAGS"
AC_MSG_RESULT($acx_pthread_ok)
if test "x$acx_pthread_ok" = xyes; then
break;
fi
PTHREAD_LIBS=""
PTHREAD_CFLAGS=""
done
fi
# Various other checks:
if test "x$acx_pthread_ok" = xyes; then
save_LIBS="$LIBS"
LIBS="$PTHREAD_LIBS $LIBS"
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
# Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
AC_MSG_CHECKING([for joinable pthread attribute])
attr_name=unknown
for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
AC_TRY_LINK([#include <pthread.h>], [int attr=$attr; return attr;],
[attr_name=$attr; break])
done
AC_MSG_RESULT($attr_name)
if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name,
[Define to necessary symbol if this constant
uses a non-standard name on your system.])
fi
AC_MSG_CHECKING([if more special flags are required for pthreads])
flag=no
case "${host_cpu}-${host_os}" in
*-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";;
*solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";;
esac
AC_MSG_RESULT(${flag})
if test "x$flag" != xno; then
PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
fi
LIBS="$save_LIBS"
CFLAGS="$save_CFLAGS"
# More AIX lossage: must compile with cc_r
AC_CHECK_PROG(PTHREAD_CC, cc_r, cc_r, ${CC})
else
PTHREAD_CC="$CC"
fi
AC_SUBST(PTHREAD_LIBS)
AC_SUBST(PTHREAD_CFLAGS)
AC_SUBST(PTHREAD_CC)
# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
if test x"$acx_pthread_ok" = xyes; then
ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1])
:
else
acx_pthread_ok=no
$2
fi
AC_LANG_RESTORE
])dnl ACX_PTHREAD

Просмотреть файл

@ -1,71 +0,0 @@
dnl @synopsis AX_OPENMP([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
dnl
dnl @summary determine how to compile programs using OpenMP
dnl
dnl This macro tries to find out how to compile programs that use
dnl OpenMP a standard API and set of compiler directives for parallel
dnl programming (see http://www-unix.mcs/)
dnl
dnl On success, it sets the
dnl OPENMP_CFLAGS/OPENMP_CXXFLAGS/OPENMP_F77FLAGS output variable to
dnl the flag (e.g. -omp) used both to compile *and* link OpenMP
dnl programs in the current language.
dnl
dnl NOTE: You are assumed to not only compile your program with these
dnl flags, but also link it with them as well.
dnl
dnl If you want to compile everything with OpenMP, you should set:
dnl
dnl CFLAGS="$CFLAGS $OPENMP_CFLAGS"
dnl #OR# CXXFLAGS="$CXXFLAGS $OPENMP_CXXFLAGS"
dnl #OR# FFLAGS="$FFLAGS $OPENMP_FFLAGS"
dnl
dnl (depending on the selected language).
dnl
dnl The user can override the default choice by setting the
dnl corresponding environment variable (e.g. OPENMP_CFLAGS).
dnl
dnl ACTION-IF-FOUND is a list of shell commands to run if an OpenMP
dnl flag is found, and ACTION-IF-NOT-FOUND is a list of commands to run
dnl it if it is not found. If ACTION-IF-FOUND is not specified, the
dnl default action will define HAVE_OPENMP.
dnl
dnl @category InstalledPackages
dnl @author Steven G. Johnson <stevenj@alum.mit.edu>
dnl @version 2006-01-24
dnl @license GPLWithACException
AC_DEFUN([AX_OPENMP], [
AC_PREREQ(2.59) dnl for _AC_LANG_PREFIX
AC_CACHE_CHECK([for OpenMP flag of _AC_LANG compiler], ax_cv_[]_AC_LANG_ABBREV[]_openmp, [save[]_AC_LANG_PREFIX[]FLAGS=$[]_AC_LANG_PREFIX[]FLAGS
ax_cv_[]_AC_LANG_ABBREV[]_openmp=unknown
# Flags to try: -fopenmp (gcc), -openmp (icc), -mp (SGI & PGI),
# -xopenmp (Sun), -omp (Tru64), -qsmp=omp (AIX),
# -Popenmp (NECSX), none (e.g. Cray)
ax_openmp_flags="-fopenmp -openmp -mp -xopenmp -omp -qsmp=omp -Popenmp none"
if test "x$OPENMP_[]_AC_LANG_PREFIX[]FLAGS" != x; then
ax_openmp_flags="$OPENMP_[]_AC_LANG_PREFIX[]FLAGS $ax_openmp_flags"
fi
for ax_openmp_flag in $ax_openmp_flags; do
case $ax_openmp_flag in
none) []_AC_LANG_PREFIX[]FLAGS="$save[]_AC_LANG_PREFIX[]FLAGS" ;;
*) []_AC_LANG_PREFIX[]FLAGS="$ax_openmp_flag $save[]_AC_LANG_PREFIX[]FLAGS" ;;
esac
AC_TRY_COMPILE([], [
#ifndef _OPENMP
# error "_OPENMP not defined"
#endif
], [ax_cv_[]_AC_LANG_ABBREV[]_openmp=$ax_openmp_flag; break])
done
[]_AC_LANG_PREFIX[]FLAGS=$save[]_AC_LANG_PREFIX[]FLAGS
])
if test "x$ax_cv_[]_AC_LANG_ABBREV[]_openmp" = "xunknown"; then
m4_default([$2],:)
else
if test "x$ax_cv_[]_AC_LANG_ABBREV[]_openmp" != "xnone"; then
OPENMP_[]_AC_LANG_PREFIX[]FLAGS=$ax_cv_[]_AC_LANG_ABBREV[]_openmp
fi
m4_default([$1],:)
fi
])dnl AX_OPENMP

Просмотреть файл

@ -1,179 +0,0 @@
AC_DEFUN([ACVT_CLAPACK],
[
clapack_error="no"
have_clapack="no"
clapack_3thparty=
CLAPACKDIR=
CLAPACKINCDIR=
CLAPACKLIBDIR=
CLAPACKLIB=
AC_ARG_WITH(clapack-dir,
AC_HELP_STRING([--with-clapack-dir=LAPACKDIR], [give the path for CLAPACK, default: /usr]),
[CLAPACKDIR="$withval/"])
AC_ARG_WITH(clapack-inc-dir,
AC_HELP_STRING([--with-clapack-inc-dir=CLAPACKINCDIR],
[give the path for CLAPACK-include files, default: CLAPACKDIR/include)]),
[CLAPACKINCDIR="-I$withval"],
[AS_IF([test x"$CLAPACKDIR" != x], [CLAPACKINCDIR="-I$CLAPACKDIR"include])])
AC_ARG_WITH(clapack-lib-dir,
AC_HELP_STRING([--with-clapack-lib-dir=CLAPACKLIBDIR],
[give the path for CLAPACK-libraries, default: CLAPACKDIR/lib]),
[CLAPACKLIBDIR="-L$withval"],
[AS_IF([test x"$CLAPACKDIR" != x], [CLAPACKLIBDIR="-L$CLAPACKDIR"lib])])
AC_ARG_WITH(clapack-mkl,
AC_HELP_STRING([--with-clapack-mkl], [set CLAPACK-lib for MKL]),
[
AS_IF([test x"$withval" = "xyes"],
[
CLAPACKLIB="-lmkl -lmkl_lapack"
clapack_3thparty="mkl"
])
])
AC_ARG_WITH(clapack-acml,
AC_HELP_STRING([--with-clapack-acml], [set CLAPACK-lib for ACML]),
[
AS_IF([test x"$withval" = "xyes"],
[
CLAPACKLIB="-lacml"
clapack_3thparty="acml"
])
])
AC_ARG_WITH(clapack-essl,
AC_HELP_STRING([--with-clapack-essl], [set CLAPACK-lib for ESSL]),
[
AS_IF([test x"$withval" = "xyes"],
[
CLAPACKLIB="-lessl"
clapack_3thparty="essl"
])
])
AC_ARG_WITH(clapack-sunperf,
AC_HELP_STRING([--with-clapack-sunperf], [set CLAPACK-lib for Sun Performace Library]),
[
AS_IF([test x"$withval" = "xyes"],
[
CLAPACKLIB="-lsunperf -lfsu -lfui"
clapack_3thparty="sunperf"
])
])
AC_ARG_WITH(clapack-lib,
AC_HELP_STRING([--with-clapack-lib=CLAPACKLIB], [use given clapack lib, default: -lclapack -lcblas -lf2c]),
[CLAPACKLIB="$withval"])
sav_CPPFLAGS=$CPPFLAGS
sav_CFLAGS=$CFLAGS
CPPFLAGS="$CPPFLAGS $CLAPACKINCDIR"
CFLAGS="$CFLAGS $CLAPACKINCDIR"
AS_IF([test x"$clapack_3thparty" = "xmkl"],
[
AC_CHECK_HEADER([mkl.h],
[AC_DEFINE([HAVE_MKL], [1], [Define to 1 if you have the MKL.])],
[
AC_MSG_NOTICE([error: no mkl.h found; check path for MKL package first...])
clapack_error="yes"
])
])
AS_IF([test x"$clapack_3thparty" = "xacml"],
[
AC_CHECK_HEADER([acml.h],
[AC_DEFINE([HAVE_ACML], [1], [Define to 1 if you have the ACML.])],
[
AC_MSG_NOTICE([error: no acml.h found; check path for ACML package first...])
clapack_error="yes"
])
])
AS_IF([test x"$clapack_3thparty" = "xessl"],
[
AC_CHECK_HEADER([essl.h],
[AC_DEFINE([HAVE_ESSL], [1], [Define to 1 if you have the ESSL.])],
[
AC_MSG_NOTICE([error: no essl.h found; check path for ESSL package first...])
clapack_error="yes"
])
])
AS_IF([test x"$clapack_3thparty" = "xsunperf"],
[
AC_CHECK_HEADER([sunperf.h],
[AC_DEFINE([HAVE_SUNPERF], [1], [Define to 1 if you have the SUN Performance Library.])],
[
AC_MSG_NOTICE([error: no sunperf.h found; check path for SUNPERF package first...])
clapack_error="yes"
])
])
AS_IF([test x"$clapack_3thparty" = x],
[
AC_CHECK_HEADER([f2c.h], [],
[
AC_MSG_NOTICE([error: no f2c.h found; check path for CLAPACK package first...])
clapack_error="yes"
])
AS_IF([test x"$clapack_error" = "xno"],
[
AC_MSG_CHECKING([for clapack.h])
AC_TRY_COMPILE(
[
#include "f2c.h"
#include "clapack.h"
], [],
[AC_MSG_RESULT([yes])],
[
AC_MSG_RESULT([no])
AC_MSG_NOTICE([error: no clapack.h found; check path for CLAPACK package first...])
clapack_error="yes"
])
])
AS_IF([test x"$clapack_error" = "xno"],
[
AC_MSG_CHECKING([for blaswrap.h])
AC_TRY_COMPILE(
[
#include "f2c.h"
#include "blaswrap.h"
], [],
[AC_MSG_RESULT([yes])],
[
AC_MSG_RESULT([no])
AC_MSG_NOTICE([error: no blaswrap.h found; check path for CLAPACK package first...])
clapack_error="yes"
])
])
])
CPPFLAGS=$sav_CPPFLAGS
CFLAGS=$sav_CFLAGS
AS_IF([test x"$CLAPACKLIB" = x -a x"$clapack_error" = "xno"],
[
sav_LIBS=$LIBS
LIBS="$LIBS $CLAPACKLIBDIR -lclapack -lcblas -lf2c"
AC_MSG_CHECKING([whether linking with -lclapack -lcblas -lf2c works])
AC_TRY_LINK([],[],
[AC_MSG_RESULT([yes]); CLAPACKLIB="-lclapack -lcblas -lf2c"], [AC_MSG_RESULT([no])])
LIBS=$sav_LIBS
])
AS_IF([test x"$CLAPACKLIB" = x -a x"$clapack_error" = "xno"],
[
AC_MSG_NOTICE([error: either libclapack, libcblas or libf2x not found; check path for CLAPACK package first...])
clapack_error="yes"
])
AS_IF([test x"$clapack_error" = "xno"], [have_clapack="yes"])
AC_SUBST(CLAPACKINCDIR)
AC_SUBST(CLAPACKLIBDIR)
AC_SUBST(CLAPACKLIB)
])

Просмотреть файл

@ -1,284 +0,0 @@
AC_DEFUN([ACVT_COMPINST],
[
compinst_error="no"
check_compinst="yes"
force_compinst="no"
have_compinst="no"
compinst_type=
compinst_cflags=
compinst_cxxflags=
compinst_fcflags=
compinst_gnu_cflags="-g -finstrument-functions"
compinst_gnu_cxxflags="$compinst_gnu_cflags"
compinst_gnu_fcflags="$compinst_gnu_cflags"
compinst_pgi_cflags="-Mprof=func"
compinst_pgi_cxxflags="$compinst_pgi_cflags"
compinst_pgi_fcflags="$compinst_pgi_cflags"
compinst_pgi9_cflags="-Minstrument=functions"
compinst_pgi9_cxxflags="$compinst_pgi9_cflags"
compinst_pgi9_fcflags="$compinst_pgi9_cflags"
compinst_craycce_cflags="-hfunc_trace"
compinst_craycce_cxxflags="$compinst_craycce_cflags"
compinst_craycce_fcflags="$compinst_craycce_cflags"
compinst_sun_cflags=""
compinst_sun_cxxflags=""
compinst_sun_fcflags="-O -Qoption f90comp -phat"
compinst_xl_cflags="-qdebug=function_trace"
compinst_xl_cxxflags="$compinst_xl_cflags"
compinst_xl_fcflags="$compinst_xl_cflags"
compinst_necsx_cflags="-ftrace"
compinst_necsx_cxxflags="$compinst_necsx_cflags"
compinst_necsx_fcflags="$compinst_necsx_cflags"
compinst_openuh_cflags="-fb_create inst -fb_type=1 -fb_phase=0 -epilog -OPT:instr_proc"
compinst_openuh_cxxflags="$compinst_openuh_cflags"
compinst_openuh_fcflags="$compinst_openuh_cflags"
AC_REQUIRE([ACVT_PLATFORM])
AC_ARG_ENABLE(compinst,
AC_HELP_STRING([--enable-compinst=TYPE],
[enable support for compiler instrumentation (gnu,intel,pathscale,pgi,pgi9,craycce,xl,necsx,open64,openuh), default: automatically by configure]),
[AS_IF([test x"$enableval" = "xno"], [check_compinst="no"], [enable_compinst="$enableval"])])
AS_IF([test x"$check_compinst" = "xyes"],
[
AC_MSG_CHECKING([for compiler instrumentation])
AS_IF([test x"$enable_compinst" != x], [force_compinst="yes"])
AS_IF([test x"$enable_compinst" = "xyes"], [enable_compinst=""])
AS_IF([test x"$enable_compinst" != x],
[
AC_MSG_RESULT([skipped (--enable-compinst=$enable_compinst)])
case $enable_compinst in
gnu | intel | pathscale | open64)
compinst_type="gnu"
;;
pgi)
compinst_type="pgi"
;;
pgi9)
compinst_type="pgi9"
;;
craycce)
compinst_type="craycce"
;;
sun)
compinst_type="sun"
;;
xl)
compinst_type="xl"
;;
necsx)
compinst_type="necsx"
;;
openuh)
compinst_type="openuh"
;;
*) AC_MSG_ERROR([unknown compiler instrumentation '$enable_compinst'])
;;
esac
],
[
base_CC=`basename $CC`
case $base_CC in
gcc* | scgcc* | ppu-gcc*)
compinst_type="gnu"
AC_MSG_RESULT([gnu])
;;
icc*)
compver=`$CC -dumpversion`
compver_major=`echo $compver | cut -d '.' -f 1`
AS_IF([test $compver_major -ge 10],
[
compinst_type="gnu"
AC_MSG_RESULT([gnu (intel)])
])
;;
pathcc*)
compver=`$CC -dumpversion`
compver_major=`echo $compver | cut -d '.' -f 1`
compver_minor=`echo $compver | cut -d '.' -f 2`
AS_IF([test $compver_major -gt 3], [compinst_type="gnu"])
AS_IF([test x"$compinst_type" = x -a $compver_major -eq 3 -a $compver_minor -ge 1], [compinst_type="gnu"])
AS_IF([test x"$compinst_type" != x],
[
AC_MSG_RESULT([gnu (pathscale)])
])
;;
scpathcc*)
compinst_type="gnu"
AC_MSG_RESULT([gnu (pathscale)])
;;
pgcc*)
sav_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS $compinst_pgi9_cflags"
AC_TRY_COMPILE([], [],
[
compinst_type="pgi9"
AC_MSG_RESULT([pgi9])
],
[
compinst_type="pgi"
AC_MSG_RESULT([pgi])
])
CFLAGS=$sav_CFLAGS
;;
craycc*)
compinst_type="craycce"
AC_MSG_RESULT([craycce])
;;
xlc* | blrts_xlc* | bgxlc*)
compinst_type="xl"
AC_MSG_RESULT([xl])
;;
suncc*)
compinst_type="sun"
AC_MSG_RESULT([sun])
;;
cc*)
AS_IF([test "$PLATFORM" = "crayxt" -o "$PLATFORM" = "crayxe"],
[
for f in -V --version; do
case `$CC $f 2>&1` in
*pgcc\ [[1-8]].*)
compinst_type="pgi"
AC_MSG_RESULT([pgi])
;;
*pgcc\ *)
compinst_type="pgi9"
AC_MSG_RESULT([pgi9])
;;
*PathScale*)
compinst_type="gnu"
AC_MSG_RESULT([gnu (pathscale)])
;;
*Intel*)
compinst_type="gnu"
AC_MSG_RESULT([gnu (intel)])
;;
*gcc\ *)
compinst_type="gnu"
AC_MSG_RESULT([gnu])
;;
*Cray*)
compinst_type="craycce"
AC_MSG_RESULT([craycce])
;;
esac
AS_IF([test x"$compinst_type" != x], [break])
done
],
[
compver=`$CC -V 2>&1 | grep "Sun C"`
AS_IF([test "$?" = "0"],
[
compinst_type="sun"
AC_MSG_RESULT([sun])
])
])
;;
opencc*)
compver=`$CC -dumpversion | head -n1 2>&1`
compver_major=`echo $compver | cut -d '.' -f 1`
compver_minor=`echo $compver | cut -d '.' -f 2`
AS_IF([test $compver_major -gt 4], [compinst_type="gnu"])
AS_IF([test x"$compinst_type" = x -a $compver_major -eq 4 -a $compver_minor -ge 2], [compinst_type="gnu"])
AS_IF([test x"$compinst_type" != x],
[
AC_MSG_RESULT([gnu (open64)])
])
;;
uhcc*)
compver=`$CC -dumpversion | head -n1 2>&1`
compver_major=`echo $compver | cut -d '.' -f 1`
AS_IF([test $compver_major -ge 4],
[
compinst_type="openuh"
AC_MSG_RESULT([openuh])
])
;;
sxcc*)
compinst_type="necsx"
AC_MSG_RESULT([necsx])
;;
*)
;;
esac
AS_IF([test x"$compinst_type" = x],
[
AC_MSG_RESULT([unknown])
AC_MSG_NOTICE([error: the compiler '$base_CC' doesn't support instrumentation])
compinst_error="yes"
])
])
AS_IF([test x"$compinst_error" = "xno"],
[
AS_IF([test x"$compinst_type" = "xgnu" -o x"$compinst_type" = "xpgi9" -o x"$compinst_type" = "xcraycce"],
[
ACVT_DL
])
])
AS_IF([test x"$compinst_error" = "xno" -a x"$compinst_type" != x],
[
have_compinst="yes"
case $compinst_type in
gnu)
compinst_cflags=$compinst_gnu_cflags
compinst_cxxflags=$compinst_gnu_cxxflags
compinst_fcflags=$compinst_gnu_fcflags
;;
pgi)
compinst_cflags=$compinst_pgi_cflags
compinst_cxxflags=$compinst_pgi_cxxflags
compinst_fcflags=$compinst_pgi_fcflags
;;
pgi9)
compinst_cflags=$compinst_pgi9_cflags
compinst_cxxflags=$compinst_pgi9_cxxflags
compinst_fcflags=$compinst_pgi9_fcflags
;;
craycce)
compinst_cflags=$compinst_craycce_cflags
compinst_cxxflags=$compinst_craycce_cxxflags
compinst_fcflags=$compinst_craycce_fcflags
;;
sun)
compinst_cflags=$compinst_sun_cflags
compinst_cxxflags=$compinst_sun_cxxflags
compinst_fcflags=$compinst_sun_fcflags
;;
xl)
compinst_cflags=$compinst_xl_cflags
compinst_cxxflags=$compinst_xl_cxxflags
compinst_fcflags=$compinst_xl_fcflags
;;
necsx)
compinst_cflags=$compinst_necsx_cflags
compinst_cxxflags=$compinst_necsx_cxxflags
compinst_fcflags=$compinst_necsx_fcflags
;;
openuh)
compinst_cflags=$compinst_openuh_cflags
compinst_cxxflags=$compinst_openuh_cxxflags
compinst_fcflags=$compinst_openuh_fcflags
;;
esac
])
])
])

Просмотреть файл

@ -1,431 +0,0 @@
AC_DEFUN([ACVT_COMPWRAP],
[
VT_WRAPPER_CC_COMPILER=$CC
VT_WRAPPER_CC_EXTRA_COMPILER_FLAGS=
VT_WRAPPER_CC_EXTRA_LINKER_FLAGS=
VT_WRAPPER_CC_EXTRA_LIBS=
VT_WRAPPER_CC_CPP=$CPP
VT_WRAPPER_CC_EXTRA_CPPFLAGS=
VT_WRAPPER_CC_DYNINST_COMPILER_FLAGS=
VT_WRAPPER_CC_TAUINST_OPTS=
VT_WRAPPER_CC_TAUINST_PARSE_BIN=
VT_WRAPPER_CC_TAUINST_PARSE_OPTS=
VT_WRAPPER_CC_COMPINST_COMPILER_FLAGS=
VT_WRAPPER_CC_DEFAULT_PARTYPE="seq"
VT_WRAPPER_CXX_COMPILER=$CXX
VT_WRAPPER_CXX_EXTRA_COMPILER_FLAGS=
VT_WRAPPER_CXX_EXTRA_LINKER_FLAGS=
VT_WRAPPER_CXX_EXTRA_LIBS=
VT_WRAPPER_CXX_CPP=$CXXCPP
VT_WRAPPER_CXX_EXTRA_CPPFLAGS=
VT_WRAPPER_CXX_DYNINST_COMPILER_FLAGS=
VT_WRAPPER_CXX_TAUINST_OPTS=
VT_WRAPPER_CXX_TAUINST_PARSE_BIN=
VT_WRAPPER_CXX_TAUINST_PARSE_OPTS=
VT_WRAPPER_CXX_COMPINST_COMPILER_FLAGS=
VT_WRAPPER_CXX_DEFAULT_PARTYPE="seq"
VT_WRAPPER_FC_COMPILER=$FC
VT_WRAPPER_FC_EXTRA_COMPILER_FLAGS=
VT_WRAPPER_FC_EXTRA_LINKER_FLAGS=
VT_WRAPPER_FC_EXTRA_LIBS=
VT_WRAPPER_FC_CPP=$CPP
VT_WRAPPER_FC_EXTRA_CPPFLAGS=
VT_WRAPPER_FC_DYNINST_COMPILER_FLAGS=
VT_WRAPPER_FC_TAUINST_OPTS=
VT_WRAPPER_FC_TAUINST_PARSE_BIN=
VT_WRAPPER_FC_TAUINST_PARSE_OPTS=
VT_WRAPPER_FC_COMPINST_COMPILER_FLAGS=
VT_WRAPPER_FC_DEFAULT_PARTYPE="seq"
VT_WRAPPER_NVCC_COMPILER=$NVCC
VT_WRAPPER_NVCC_EXTRA_COMPILER_FLAGS=
VT_WRAPPER_NVCC_EXTRA_LINKER_FLAGS=
VT_WRAPPER_NVCC_EXTRA_LIBS=
VT_WRAPPER_NVCC_CPP=$CPP
VT_WRAPPER_NVCC_EXTRA_CPPFLAGS=
VT_WRAPPER_NVCC_DYNINST_COMPILER_FLAGS=
VT_WRAPPER_NVCC_TAUINST_OPTS=
VT_WRAPPER_NVCC_TAUINST_PARSE_BIN=
VT_WRAPPER_NVCC_TAUINST_PARSE_OPTS=
VT_WRAPPER_NVCC_COMPINST_COMPILER_FLAGS=
VT_WRAPPER_NVCC_AVAIL_INST="manual"
VT_WRAPPER_NVCC_DEFAULT_INST="manual"
VT_WRAPPER_NVCC_DEFAULT_PARTYPE="seq"
VT_WRAPPER_VTLIB="-lvt"
VT_WRAPPER_VTMPILIB="-lvt-mpi"
VT_WRAPPER_VTMTLIB="-lvt-mt"
VT_WRAPPER_VTHYBLIB="-lvt-hyb"
VT_WRAPPER_OPARI_BIN=
VT_WRAPPER_OPARI_OPTS=
VT_WRAPPER_OPARI_TAB_COMPILER=
VT_WRAPPER_OPARI_TAB_COMPILER_FLAGS=
VT_WRAPPER_TAUINST_BIN=
VT_WRAPPER_AVAIL_INST="manual"
VT_WRAPPER_DEFAULT_INST="manual"
AC_REQUIRE([ACVT_PLATFORM])
AC_REQUIRE([ACVT_COMPINST])
AC_REQUIRE([ACVT_DYNINST])
AC_REQUIRE([ACVT_THREADS])
AC_ARG_WITH(wrapper-cc-compiler,
AC_HELP_STRING([--with-wrapper-cc-compiler=WRAPPERCC],
[underlying C compiler command for vtcc, default: CC]),
[VT_WRAPPER_CC_COMPILER=$withval])
AC_ARG_WITH(wrapper-cc-compiler-flags,
AC_HELP_STRING([--with-wrapper-cc-compiler-flags=WRAPPERCCCFLAGS],
[extra compiler flags to add when using vtcc]),
[VT_WRAPPER_CC_EXTRA_COMPILER_FLAGS=$withval])
AC_ARG_WITH(wrapper-cc-linker-flags,
AC_HELP_STRING([--with-wrapper-cc-linker-flags=WRAPPERCCLDFLAGS],
[extra linker flags to add when using vtcc]),
[VT_WRAPPER_CC_EXTRA_LINKER_FLAGS=$withval])
AC_ARG_WITH(wrapper-cc-libs,
AC_HELP_STRING([--with-wrapper-cc-libs=WRAPPERCCLIBS],
[extra libraries to link when using vtcc]),
[VT_WRAPPER_CC_EXTRA_LIBS=$withval])
AC_ARG_WITH(wrapper-cc-cpp,
AC_HELP_STRING([--with-wrapper-cc-cpp=WRAPPERCCCPP],
[C preprocessor command for vtcc, default: CPP]),
[VT_WRAPPER_CC_CPP=$withval])
AC_ARG_WITH(wrapper-cc-cppflags,
AC_HELP_STRING([--with-wrapper-cc-cppflags=WRAPPERCCCPPFLAGS],
[extra preprocessor flags to add when using vtcc -vt:preprocess]),
[VT_WRAPPER_CC_EXTRA_CPPFLAGS=$withval])
AC_ARG_WITH(wrapper-cc-default-partype,
AC_HELP_STRING([--with-wrapper-cc-default-partype=TYPE],
[default parallelization type for vtcc (seq,mt,mpi,hyb), default: $VT_WRAPPER_CC_DEFAULT_PARTYPE]),
[
case $withval in
seq | mt | mpi | hyb)
VT_WRAPPER_CC_DEFAULT_PARTYPE=$withval
;;
*)
AC_MSG_ERROR([value of '--with-wrapper-cc-default-partype' not properly set])
;;
esac
])
AC_ARG_WITH(wrapper-cxx-compiler,
AC_HELP_STRING([--with-wrapper-cxx-compiler=WRAPPERCXX],
[underlying C++ compiler command for vtcxx, default: CXX]),
[VT_WRAPPER_CXX_COMPILER=$withval])
AC_ARG_WITH(wrapper-cxx-compiler-flags,
AC_HELP_STRING([--with-wrapper-cxx-compiler-flags=WRAPPERCXXCFLAGS],
[extra compiler flags to add when using vtcxx]),
[VT_WRAPPER_CXX_EXTRA_COMPILER_FLAGS=$withval])
AC_ARG_WITH(wrapper-cxx-linker-flags,
AC_HELP_STRING([--with-wrapper-cxx-linker-flags=WRAPPERCXXLDFLAGS],
[extra linker flags to add when using vtcxx]),
[VT_WRAPPER_CXX_EXTRA_LINKER_FLAGS=$withval])
AC_ARG_WITH(wrapper-cxx-libs,
AC_HELP_STRING([--with-wrapper-cxx-libs=WRAPPERCXXLIBS],
[extra libraries to link when using vtcxx]),
[VT_WRAPPER_CXX_EXTRA_LIBS=$withval])
AC_ARG_WITH(wrapper-cxx-cpp,
AC_HELP_STRING([--with-wrapper-cxx-cpp=WRAPPERCXXCPP],
[C++ preprocessor command for vtcxx, default: CXXCPP]),
[VT_WRAPPER_CXX_CPP=$withval])
AC_ARG_WITH(wrapper-cxx-cppflags,
AC_HELP_STRING([--with-wrapper-cxx-cppflags=WRAPPERCXXCPPFLAGS],
[extra preprocessor flags to add when using vtcxx -vt:preprocess]),
[VT_WRAPPER_CXX_EXTRA_CPPFLAGS=$withval])
AC_ARG_WITH(wrapper-cxx-default-partype,
AC_HELP_STRING([--with-wrapper-cxx-default-partype=TYPE],
[default parallelization type for vtcxx (seq,mt,mpi,hyb), default: $VT_WRAPPER_CXX_DEFAULT_PARTYPE]),
[
case $withval in
seq | mt | mpi | hyb)
VT_WRAPPER_CXX_DEFAULT_PARTYPE=$withval
;;
*)
AC_MSG_ERROR([value of '--with-wrapper-cxx-default-partype' not properly set])
;;
esac
])
AC_ARG_WITH(wrapper-fc-compiler,
AC_HELP_STRING([--with-wrapper-fc-compiler=WRAPPERFC],
[underlying Fortran compiler command for vtfort, default: FC]),
[VT_WRAPPER_FC_COMPILER=$withval])
AC_ARG_WITH(wrapper-fc-compiler-flags,
AC_HELP_STRING([--with-wrapper-fc-compiler-flags=WRAPPERFCCFLAGS],
[extra compiler flags to add when using vtfort]),
[VT_WRAPPER_FC_EXTRA_COMPILER_FLAGS=$withval])
AC_ARG_WITH(wrapper-fc-linker-flags,
AC_HELP_STRING([--with-wrapper-fc-linker-flags=WRAPPERFCLDFLAGS],
[extra linker flags to add when using vtfort]),
[VT_WRAPPER_FC_EXTRA_LINKER_FLAGS=$withval])
AC_ARG_WITH(wrapper-fc-libs,
AC_HELP_STRING([--with-wrapper-fc-libs=WRAPPERFCLIBS],
[extra libraries to link when using vtfort]),
[VT_WRAPPER_FC_EXTRA_LIBS=$withval])
AC_ARG_WITH(wrapper-fc-cpp,
AC_HELP_STRING([--with-wrapper-fc-cpp=WRAPPERFCCPP],
[C preprocessor command for vtfort, default: CPP]),
[VT_WRAPPER_FC_CPP=$withval])
AC_ARG_WITH(wrapper-fc-cppflags,
AC_HELP_STRING([--with-wrapper-fc-cppflags=WRAPPERFCCPPFLAGS],
[extra preprocessor flags to add when using vtfort -vt:preprocess]),
[VT_WRAPPER_fC_EXTRA_CPPFLAGS=$withval])
AC_ARG_WITH(wrapper-fc-default-partype,
AC_HELP_STRING([--with-wrapper-fc-default-partype=TYPE],
[default parallelization type for vtfort (seq,mt,mpi,hyb), default: $VT_WRAPPER_FC_DEFAULT_PARTYPE]),
[
case $withval in
seq | mt | mpi | hyb)
VT_WRAPPER_FC_DEFAULT_PARTYPE=$withval
;;
*)
AC_MSG_ERROR([value of '--with-wrapper-fc-default-partype' not properly set])
;;
esac
])
AC_ARG_WITH(wrapper-nvcc-compiler,
AC_HELP_STRING([--with-wrapper-nvcc-compiler=WRAPPERNVCC],
[underlying NVIDIA CUDA compiler command for vtnvcc, default: NVCC]),
[VT_WRAPPER_NVCC_COMPILER=$withval])
AC_ARG_WITH(wrapper-nvcc-compiler-flags,
AC_HELP_STRING([--with-wrapper-nvcc-compiler-flags=WRAPPERNVCCCFLAGS],
[extra compiler flags to add when using vtnvcc]),
[VT_WRAPPER_NVCC_EXTRA_COMPILER_FLAGS=$withval])
AC_ARG_WITH(wrapper-nvcc-linker-flags,
AC_HELP_STRING([--with-wrapper-nvcc-linker-flags=WRAPPERNVCCLDFLAGS],
[extra linker flags to add when using vtnvcc]),
[VT_WRAPPER_NVCC_EXTRA_LINKER_FLAGS=$withval])
AC_ARG_WITH(wrapper-nvcc-libs,
AC_HELP_STRING([--with-wrapper-nvcc-libs=WRAPPERNVCCLIBS],
[extra libraries to link when using vtnvcc]),
[VT_WRAPPER_NVCC_EXTRA_LIBS=$withval])
AC_ARG_WITH(wrapper-nvcc-cpp,
AC_HELP_STRING([--with-wrapper-nvcc-cpp=WRAPPERNVCCCPP],
[C preprocessor command for vtnvcc, default: CPP]),
[VT_WRAPPER_NVCC_CPP=$withval])
AC_ARG_WITH(wrapper-nvcc-cppflags,
AC_HELP_STRING([--with-wrapper-nvcc-cppflags=WRAPPERNVCCCPPFLAGS],
[extra preprocessor flags to add when using vtnvcc -vt:preprocess]),
[VT_WRAPPER_NVCC_EXTRA_CPPFLAGS=$withval])
AC_ARG_WITH(wrapper-nvcc-default-partype,
AC_HELP_STRING([--with-wrapper-nvcc-default-partype=TYPE],
[default parallelization type for vtnvcc (seq,mt,mpi,hyb), default: $VT_WRAPPER_NVCC_DEFAULT_PARTYPE]),
[
case $withval in
seq | mt | mpi | hyb)
VT_WRAPPER_NVCC_DEFAULT_PARTYPE=$withval
;;
*)
AC_MSG_ERROR([value of '--with-wrapper-nvcc-default-partype' not properly set])
;;
esac
])
AS_IF([test "$PLATFORM" = "macos"],
[
VT_WRAPPER_CC_EXTRA_LINKER_FLAGS="$VT_WRAPPER_CC_EXTRA_LINKER_FLAGS -Wl,-force_flat_namespace"
VT_WRAPPER_CXX_EXTRA_LINKER_FLAGS="$VT_WRAPPER_CXX_EXTRA_LINKER_FLAGS -Wl,-force_flat_namespace"
VT_WRAPPER_FC_EXTRA_LINKER_FLAGS="$VT_WRAPPER_FC_EXTRA_LINKER_FLAGS -Wl,-force_flat_namespace"
VT_WRAPPER_NVCC_EXTRA_LINKER_FLAGS="$VT_WRAPPER_NVCC_EXTRA_LINKER_FLAGS -Wl,-force_flat_namespace"
])
AS_IF([test x"$enable_shared" = "xyes"],
[
case $PLATFORM in
bgp | bgq)
VT_WRAPPER_CC_EXTRA_LINKER_FLAGS="$VT_WRAPPER_CC_EXTRA_LINKER_FLAGS -Wl,-dy"
VT_WRAPPER_CXX_EXTRA_LINKER_FLAGS="$VT_WRAPPER_CXX_EXTRA_LINKER_FLAGS -Wl,-dy"
VT_WRAPPER_FC_EXTRA_LINKER_FLAGS="$VT_WRAPPER_FC_EXTRA_LINKER_FLAGS -Wl,-dy"
VT_WRAPPER_NVCC_EXTRA_LINKER_FLAGS="$VT_WRAPPER_NVCC_EXTRA_LINKER_FLAGS -Wl,-dy"
;;
esac
])
AS_IF([test x"$compinst_type" = "xpgi9" -o x"$compinst_type" = "xcraycce"],
[
VT_WRAPPER_VTLIB="-Wl,--whole-archive $VT_WRAPPER_VTLIB -Wl,--no-whole-archive"
VT_WRAPPER_VTMPILIB="-Wl,--whole-archive $VT_WRAPPER_VTMPILIB -Wl,--no-whole-archive"
VT_WRAPPER_VTMTLIB="-Wl,--whole-archive $VT_WRAPPER_VTMTLIB -Wl,--no-whole-archive"
VT_WRAPPER_VTHYBLIB="-Wl,--whole-archive $VT_WRAPPER_VTHYBLIB -Wl,--no-whole-archive"
])
AS_IF([test x"$build_opari" = "xyes"],
[
VT_WRAPPER_OPARI_BIN="\${bindir}/opari"
for f in -V --version; do
case `$CC $f 2>&1` in
*pgcc\ [[1-8]].* | *PathScale*)
VT_WRAPPER_OPARI_OPTS="-nodecl"
break
;;
*Cray\ C*)
VT_WRAPPER_OPARI_OPTS="-nosrc"
break
;;
esac
done
VT_WRAPPER_OPARI_TAB_COMPILER="$CC"
VT_WRAPPER_OPARI_TAB_COMPILER_FLAGS="$CFLAGS"
])
AS_IF([test x"$have_compinst" = "xyes"],
[
VT_WRAPPER_CC_COMPINST_COMPILER_FLAGS="$compinst_cflags"
VT_WRAPPER_CXX_COMPINST_COMPILER_FLAGS="$compinst_cxxflags"
VT_WRAPPER_FC_COMPINST_COMPILER_FLAGS="$compinst_fcflags"
AS_IF([test x"$compinst_type" = "xgnu"],
[
VT_WRAPPER_NVCC_COMPINST_COMPILER_FLAGS="$compinst_cflags"
VT_WRAPPER_NVCC_AVAIL_INST="$VT_WRAPPER_NVCC_AVAIL_INST compinst"
VT_WRAPPER_NVCC_DEFAULT_INST="compinst"
])
VT_WRAPPER_AVAIL_INST="$VT_WRAPPER_AVAIL_INST compinst"
VT_WRAPPER_DEFAULT_INST="compinst"
])
AS_IF([test x"$have_dyninst" = "xyes"],
[
VT_WRAPPER_CC_DYNINST_COMPILER_FLAGS="-g"
VT_WRAPPER_CXX_DYNINST_COMPILER_FLAGS="-g"
VT_WRAPPER_FC_DYNINST_COMPILER_FLAGS="-g"
VT_WRAPPER_NVCC_DYNINST_COMPILER_FLAGS="-g"
VT_WRAPPER_NVCC_AVAIL_INST="$VT_WRAPPER_NVCC_AVAIL_INST dyninst"
VT_WRAPPER_AVAIL_INST="$VT_WRAPPER_AVAIL_INST dyninst"
])
mpiincdir=
fmpiincdir=
AS_IF([test x"$have_mpi" = "xyes"],
[
AS_IF([test x"$inside_openmpi" != "xno"],
[mpiincdir="-I\${includedir}/.."],
[mpiincdir="$MPIINCDIR"])
AS_IF([test x"$have_fmpi" = "xyes"],
[
AS_IF([test x"$inside_openmpi" != "xno"],
[fmpiincdir="$mpiincdir"],
[fmpiincdir="$FMPIINCDIR"])
])
])
VT_WRAPPER_CC_EXTRA_CPPFLAGS="$VT_WRAPPER_EXTRA_CPPFLAGS $mpiincdir"
VT_WRAPPER_CXX_EXTRA_CPPFLAGS="$VT_WRAPPER_EXTRA_CPPFLAGS $mpiincdir"
VT_WRAPPER_FC_EXTRA_CPPFLAGS="$VT_WRAPPER_EXTRA_CPPFLAGS $fmpiincdir"
VT_WRAPPER_NVCC_EXTRA_CPPFLAGS="$VT_WRAPPER_EXTRA_CPPFLAGS $mpiincdir"
AS_IF([test x"$have_tauinst" = "xyes"],
[
VT_WRAPPER_TAUINST_BIN="$tauinst_cmd"
VT_WRAPPER_CC_TAUINST_OPTS="-c -spec \${datadir}/TAUINST.SPEC"
VT_WRAPPER_CC_TAUINST_PARSE_BIN="$tauinst_cparse_cmd"
VT_WRAPPER_CC_TAUINST_PARSE_OPTS="$mpiincdir"
VT_WRAPPER_CXX_TAUINST_OPTS="-c++ -spec \${datadir}/TAUINST.SPEC"
VT_WRAPPER_CXX_TAUINST_PARSE_BIN="$tauinst_cxxparse_cmd"
VT_WRAPPER_CXX_TAUINST_PARSE_OPTS="$VT_WRAPPER_CC_TAUINST_PARSE_OPTS"
VT_WRAPPER_FC_TAUINST_OPTS="-fortran -spec \${datadir}/TAUINST.SPEC"
VT_WRAPPER_FC_TAUINST_PARSE_BIN="$tauinst_fparse_cmd"
VT_WRAPPER_FC_TAUINST_PARSE_OPTS="$fmpiincdir"
VT_WRAPPER_NVCC_TAUINST_OPTS="$VT_WRAPPER_CC_TAUINST_OPTS"
VT_WRAPPER_NVCC_TAUINST_PARSE_BIN="$VT_WRAPPER_CC_TAUINST_PARSE_BIN"
VT_WRAPPER_NVCC_TAUINST_PARSE_OPTS="$VT_WRAPPER_CC_TAUINST_PARSE_OPTS $CUDATKINCDIR"
VT_WRAPPER_NVCC_AVAIL_INST="$VT_WRAPPER_NVCC_AVAIL_INST tauinst"
VT_WRAPPER_AVAIL_INST="$VT_WRAPPER_AVAIL_INST tauinst"
])
AC_SUBST(VT_WRAPPER_CC_COMPILER)
AC_SUBST(VT_WRAPPER_CC_EXTRA_COMPILER_FLAGS)
AC_SUBST(VT_WRAPPER_CC_EXTRA_LINKER_FLAGS)
AC_SUBST(VT_WRAPPER_CC_EXTRA_LIBS)
AC_SUBST(VT_WRAPPER_CC_CPP)
AC_SUBST(VT_WRAPPER_CC_EXTRA_CPPFLAGS)
AC_SUBST(VT_WRAPPER_CC_DYNINST_COMPILER_FLAGS)
AC_SUBST(VT_WRAPPER_CC_TAUINST_OPTS)
AC_SUBST(VT_WRAPPER_CC_TAUINST_PARSE_BIN)
AC_SUBST(VT_WRAPPER_CC_TAUINST_PARSE_OPTS)
AC_SUBST(VT_WRAPPER_CC_COMPINST_COMPILER_FLAGS)
AC_SUBST(VT_WRAPPER_CC_DEFAULT_PARTYPE)
AC_SUBST(VT_WRAPPER_CXX_COMPILER)
AC_SUBST(VT_WRAPPER_CXX_EXTRA_COMPILER_FLAGS)
AC_SUBST(VT_WRAPPER_CXX_EXTRA_LINKER_FLAGS)
AC_SUBST(VT_WRAPPER_CXX_EXTRA_LIBS)
AC_SUBST(VT_WRAPPER_CXX_CPP)
AC_SUBST(VT_WRAPPER_CXX_EXTRA_CPPFLAGS)
AC_SUBST(VT_WRAPPER_CXX_DYNINST_COMPILER_FLAGS)
AC_SUBST(VT_WRAPPER_CXX_TAUINST_OPTS)
AC_SUBST(VT_WRAPPER_CXX_TAUINST_PARSE_BIN)
AC_SUBST(VT_WRAPPER_CXX_TAUINST_PARSE_OPTS)
AC_SUBST(VT_WRAPPER_CXX_COMPINST_COMPILER_FLAGS)
AC_SUBST(VT_WRAPPER_CXX_DEFAULT_PARTYPE)
AC_SUBST(VT_WRAPPER_FC_COMPILER)
AC_SUBST(VT_WRAPPER_FC_EXTRA_COMPILER_FLAGS)
AC_SUBST(VT_WRAPPER_FC_EXTRA_LINKER_FLAGS)
AC_SUBST(VT_WRAPPER_FC_EXTRA_LIBS)
AC_SUBST(VT_WRAPPER_FC_CPP)
AC_SUBST(VT_WRAPPER_FC_EXTRA_CPPFLAGS)
AC_SUBST(VT_WRAPPER_FC_DYNINST_COMPILER_FLAGS)
AC_SUBST(VT_WRAPPER_FC_TAUINST_OPTS)
AC_SUBST(VT_WRAPPER_FC_TAUINST_PARSE_BIN)
AC_SUBST(VT_WRAPPER_FC_TAUINST_PARSE_OPTS)
AC_SUBST(VT_WRAPPER_FC_COMPINST_COMPILER_FLAGS)
AC_SUBST(VT_WRAPPER_FC_DEFAULT_PARTYPE)
AC_SUBST(VT_WRAPPER_NVCC_COMPILER)
AC_SUBST(VT_WRAPPER_NVCC_EXTRA_COMPILER_FLAGS)
AC_SUBST(VT_WRAPPER_NVCC_EXTRA_LINKER_FLAGS)
AC_SUBST(VT_WRAPPER_NVCC_EXTRA_LIBS)
AC_SUBST(VT_WRAPPER_NVCC_CPP)
AC_SUBST(VT_WRAPPER_NVCC_EXTRA_CPPFLAGS)
AC_SUBST(VT_WRAPPER_NVCC_DYNINST_COMPILER_FLAGS)
AC_SUBST(VT_WRAPPER_NVCC_TAUINST_OPTS)
AC_SUBST(VT_WRAPPER_NVCC_TAUINST_PARSE_BIN)
AC_SUBST(VT_WRAPPER_NVCC_TAUINST_PARSE_OPTS)
AC_SUBST(VT_WRAPPER_NVCC_COMPINST_COMPILER_FLAGS)
AC_SUBST(VT_WRAPPER_NVCC_AVAIL_INST)
AC_SUBST(VT_WRAPPER_NVCC_DEFAULT_INST)
AC_SUBST(VT_WRAPPER_NVCC_DEFAULT_PARTYPE)
AC_SUBST(VT_WRAPPER_VTLIB)
AC_SUBST(VT_WRAPPER_VTMPILIB)
AC_SUBST(VT_WRAPPER_VTMTLIB)
AC_SUBST(VT_WRAPPER_VTHYBLIB)
AC_SUBST(VT_WRAPPER_OPARI_BIN)
AC_SUBST(VT_WRAPPER_OPARI_OPTS)
AC_SUBST(VT_WRAPPER_OPARI_TAB_COMPILER)
AC_SUBST(VT_WRAPPER_OPARI_TAB_COMPILER_FLAGS)
AC_SUBST(VT_WRAPPER_TAUINST_BIN)
AC_SUBST(VT_WRAPPER_AVAIL_INST)
AC_SUBST(VT_WRAPPER_DEFAULT_INST)
])

Просмотреть файл

@ -1,388 +0,0 @@
AC_DEFUN([ACVT_CONF_INIT],
[
AC_ARG_ENABLE(config-summary,
AC_HELP_STRING([--enable-config-summary],
[show summary of configuration, default: enabled]), [],
[
AS_IF([test x"$inside_openmpi" != "xno"],
[enable_config_summary="no"], [enable_config_summary="yes"])
])
AC_ARG_ENABLE(config-titles,
AC_HELP_STRING([--enable-config-titles],
[show titles for each configure section, default: enabled]), [],
[
AS_IF([test x"$inside_openmpi" != "xno"],
[enable_config_titles="no"], [enable_config_titles="yes"])
])
])
AC_DEFUN([ACVT_CONF_OPTIONS],
[
options_dir="$srcdir/config/defaults"
options_file=
AC_REQUIRE([ACVT_PLATFORM])
AC_MSG_CHECKING([for options file])
AC_ARG_WITH(options,
AC_HELP_STRING([--with-options=FILE],
[load options from FILE]),
[
AC_MSG_RESULT([skipped (--with-options=$withval)])
AS_IF([test x"$withval" = "xyes"],
[AC_MSG_ERROR([value of '--with-options' not properly set])])
AS_IF([test x"$withval" != "xno"],
[
dnl if no path, check in config/defaults
AS_IF([test "`basename $withval`" = "$withval"],
[
AS_IF([test -r "$options_dir/$withval"],
[withval="$options_dir/$withval"])
])
dnl make sure file exists
AS_IF([test ! -r "$withval"],
[AC_MSG_ERROR([options file '$withval' not found])])
options_file="$withval"
])
],
[
dnl if no file given, generate options file name and look for it
dnl in config/defaults
AS_IF([test x"$inside_openmpi" = "xno"],
[
AS_IF([test x"$BITMODE" != x],
[
AS_IF([test -r "$options_dir/$PLATFORM-$BITMODE"],
[options_file="$options_dir/$PLATFORM-$BITMODE"])
])
AS_IF([test x"$options_file" = x],
[
AS_IF([test -r "$options_dir/$PLATFORM"],
[options_file="$options_dir/$PLATFORM"])
])
])
AS_IF([test x"$options_file" != x],
[AC_MSG_RESULT([$options_file])], [AC_MSG_RESULT([no])])
])
dnl load options from file
AS_IF([test x"$options_file" != x],
[
AC_MSG_NOTICE([loading options from '$options_file'])
dnl save command line options
rm -f confopts
for var in $ac_precious_vars; do
set | grep ^$var= >>confopts
done
set | grep ^enable_.*= >>confopts
set | grep ^with_.*= >>confopts
dnl show + load options into environment
cat $options_file
set -a
. $options_file
dnl restore command line options
. ./confopts
set +a
rm -f confopts
])
])
AC_DEFUN([ACVT_CONF_TITLE],
[
AS_IF([test x"$enable_config_titles" = "xyes"],
[echo; echo "*** $1"])
])
AC_DEFUN([ACVT_CONF_SUBTITLE],
[
AS_IF([test x"$enable_config_titles" = "xyes"],
[echo "+++ $1"])
])
AC_DEFUN([ACVT_CONF_SUBSUBTITLE],
[
AS_IF([test x"$enable_config_titles" = "xyes"],
[echo "--- $1"])
])
AC_DEFUN([ACVT_CONF_EXPAND_VARS],
[
var=$1
while :
do
$2=`eval echo $var`
AS_IF([test x"$$2" = "x$var"], [break], [var=$$2])
done
])
AC_DEFUN([ACVT_CONF_SUMMARY],
[
AS_IF([test x"$enable_config_summary" = "xyes"],
[
echo ""
echo "-----------------------------------------------------------------------------"
echo "Configuration:"
echo ""
AS_IF([test x"$options_file" != x],
[answer="$options_file"], [answer="no"])
echo " Options file: $answer"
echo ""
echo " Build (B): $build"
echo " Host (H): $host"
echo " Cross compiling: $cross_compiling"
echo ""
AS_IF([test x"$cross_compiling" = "xyes"],
[echo " C Compiler (H|B): $CC | $CC_FOR_BUILD"],
[echo " C Compiler: $CC"])
AS_IF([test x"$cross_compiling" = "xyes"],
[echo " C++ Compiler (H|B): $CXX | $CXX_FOR_BUILD"],
[echo " C++ compiler: $CXX"])
echo " Fortran compiler: $FC"
AS_IF([test x"$cross_compiling" = "xyes"],
[echo " C preprocessor (H|B): $CPP | $CPP_FOR_BUILD"],
[echo " C preprocessor: $CPP"])
AS_IF([test x"$cross_compiling" = "xyes"],
[echo " C++ preprocessor (H|B): $CXXCPP | $CXXCPP_FOR_BUILD"],
[echo " C++ preprocessor: $CXXCPP"])
echo ""
AS_IF([test x"$cross_compiling" = "xyes"],
[echo " CFLAGS (H|B): $CFLAGS | $CFLAGS_FOR_BUILD"],
[echo " CFLAGS: $CFLAGS"])
AS_IF([test x"$cross_compiling" = "xyes"],
[echo " CXXFLAGS (H|B): $CXXFLAGS | $CXXFLAGS_FOR_BUILD"],
[echo " CXXFLAGS: $CXXFLAGS"])
echo " FCFLAGS: $FCFLAGS"
AS_IF([test x"$cross_compiling" = "xyes"],
[echo " LDFLAGS (H|B): $LDFLAGS | $LDFLAGS_FOR_BUILD"],
[echo " LDFLAGS: $LDFLAGS"])
AS_IF([test x"$cross_compiling" = "xyes"],
[echo " LIBS (H|B): $LIBS | $LIBS_FOR_BUILD"],
[echo " LIBS: $LIBS"])
echo ""
AS_IF([test x"$have_mpi" = "xyes"],
[
echo " MPI C compiler: $MPICC"
echo " MPI C++ compiler: $MPICXX"
echo " MPI Fortran compiler: $MPIFC"
echo ""
echo " MPICFLAGS (append to CFLAGS): $MPICFLAGS"
echo " MPICXXFLAGS (append to CXXFLAGS): $MPICXXFLAGS"
echo " MPIFCFLAGS (append to FCFLAGS): $MPIFCFLAGS"
echo ""
])
echo " Source code location: $PWD"
echo " Install path: $prefix"
echo ""
answer=""
AS_IF([test x"$use_extern_otf" = "xno"],
[answer="yes"], [answer="no"])
echo " Build OTF library and tools: $answer"
AS_IF([test x"$have_zlib" = "xyes"],
[answer="yes"], [answer="no"])
echo " Build ZLIB trace compression support: $answer"
AS_IF([test x"$have_iofsl" = "xyes"],
[answer="yes"], [answer="no"])
echo " Build IOFSL I/O forwarding support: $answer"
AS_IF([test x"$have_iofsl" = "xyes"],
[
AS_IF([test x"$IOFSLSCRIPTS" != x],
[answer="yes ($IOFSLSCRIPTS)"], [answer="no"])
echo " Build IOFSL scripts: $answer"
])
AS_IF([test x"$have_mpi" = "xyes"],
[answer="yes"], [answer="no"])
echo " Build MPI support: $answer"
AS_IF([test x"$have_mpi" = "xyes"],
[
AS_IF([test x"$have_fmpi" = "xyes"],
[answer="yes"], [answer="no"])
echo " Build MPI Fortran support: $answer"
AS_IF([test x"$have_fmpi" = "xyes"],
[
AS_IF([test x"$build_fmpiwraplib" = "xyes"],
[answer="yes"], [answer="no"])
echo " Build MPI Fortran wrapper library: $answer"
])
echo " Build MPI-2 support for"
AS_IF([test x"$have_mpi2_1sided" = "xyes"],
[answer="yes"], [answer="no"])
echo " One-Sided Communications: $answer"
AS_IF([test x"$have_mpi2_extcoll" = "xyes"],
[answer="yes"], [answer="no"])
echo " Extended Collective Operations: $answer"
AS_IF([test x"$have_mpi2_io" = "xyes"],
[answer="yes"], [answer="no"])
echo " I/O: $answer"
AS_IF([test x"$build_etimesync" = "xyes"],
[answer="yes"], [answer="no"])
echo " Build enhanced time sync. support: $answer"
AS_IF([test x"$have_unimci" = "xyes"],
[answer="yes ($unimci_checker_name $unimci_checker_version)"],
[answer="no"])
echo " Build MPI correctness checking support: $answer"
AS_IF([test x"$build_mpiunifylib" = "xyes"],
[answer="yes"], [answer="no"])
echo " Build MPI trace unification library: $answer"
])
AS_IF([test x"$have_threads" = "xyes"],
[
answer=
AS_IF([test x"$have_pthread" = "xyes"],
[answer="POSIX threads"])
AS_IF([test x"$have_omp" = "xyes"],
[AS_IF([test x"$answer" != x],
[answer="$answer, OpenMP"],
[answer="OpenMP"])])
answer="yes ($answer)"
], [answer="no"])
echo " Build Multithreading support: $answer"
AS_IF([test x"$build_hybrid" = "xyes"],
[answer="yes"], [answer="no"])
echo " Build Hybrid (MPI/Threads) support: $answer"
AS_IF([test x"$have_java" = "xyes"],
[answer="yes"], [answer="no"])
echo " Build Java support: $answer"
AS_IF([test x"$have_papi" = "xyes"],
[answer="yes (PAPI)"], [AS_IF([test x"$have_cpc" = "xyes"],
[answer="yes (CPC)"], [AS_IF([test x"$have_necsxcntr" = "xyes"],
[answer="yes (NEC SX)"], [answer="no"])])])
echo " Build Hardware Perf. Counter support: $answer"
AS_IF([test x"$have_plugin_cntr" = "xyes"],
[answer="yes"], [answer="no"])
echo " Build Plugin Counter support: $answer"
AS_IF([test x"$have_rusage" = "xyes"],
[answer="yes"], [answer="no"])
echo " Build Resource usage trace support: $answer"
AS_IF([test x"$have_getcpu" = "xyes"],
[answer="yes"], [answer="no"])
echo " Build GLIBC's CPU ID trace support: $answer"
AS_IF([test x"$have_libwrap" = "xyes"],
[
answer=
AS_IF([test x"$have_execwrap" = "xyes"],
[AS_IF([test x"$answer" != x],
[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-RT"],
[answer="CUDA-RT"])])
answer="yes ($answer)"
], [answer="no"])
echo " Build Library trace support: $answer"
AS_IF([test x"$have_libwrap" = "xyes"],
[
AS_IF([test x"$build_libwrapgen" = "xyes"],
[answer="yes"], [answer="no"])
echo " Build Library wrapper generator: $answer"
])
AS_IF([test x"$have_cupti" = "xyes"],
[
answer=
AS_IF([test x"$have_cupti_callbacks" = "xyes"],
[AS_IF([test x"$answer" != x],
[answer="$answer, Callbacks"],
[answer="Callbacks"])])
AS_IF([test x"$have_cupti_activity" = "xyes"],
[AS_IF([test x"$answer" != x],
[answer="$answer, Activitiy"],
[answer="Activitiy"])])
AS_IF([test x"$have_cupti_events" = "xyes"],
[AS_IF([test x"$answer" != x],
[answer="$answer, Events"],
[answer="Events"])])
answer="yes ($answer)"
], [answer=no])
echo " Build CUPTI support: $answer"
AS_IF([test x"$have_compinst" = "xyes"],
[answer=`echo $compinst_type | sed s/gnu/gnu*/g`],
[answer="no"])
echo ""
echo " Build compiler instrumentation support: $answer"
AS_IF([test x"$compinst_type" = "xgnu"],
[
echo " *The instrumentation type 'gnu' also works for Intel, PathScale,"
echo " and Open64 compilers."
])
AS_IF([test x"$have_dyninst" = "xyes"],
[answer="yes"], [answer="no"])
echo ""
echo " Build binary instrumentation support"
echo " by using Dyninst: $answer"
AS_IF([test x"$build_dynattlib" = "xyes"],
[answer="yes"], [answer="no"])
echo " Build Dyninst attach library: $answer"
AS_IF([test x"$have_tauinst" = "xyes"],
[answer="yes"], [answer="no"])
echo ""
echo " Build automatic source code"
echo " instrumentation support by using TAU: $answer"
AS_IF([test x"$build_vtsetup" = "xyes"],
[answer="yes"], [answer="no"])
echo ""
echo " Build vtsetup - a GUI to prepare"
echo " measurement runs with VampirTrace $answer"
AS_IF([test x"$build_vtrun" = "xyes"],
[answer="yes"], [answer="no"])
echo ""
echo " Build vtrun - an application execution"
echo " wrapper script $answer"
echo ""
echo " See config.h for further configuration information."
echo "-----------------------------------------------------------------------------"
])
])

Просмотреть файл

@ -1,87 +0,0 @@
AC_DEFUN([ACVT_CPC],
[
cpc_error="no"
have_cpc="no"
CPCDIR=
CPCINCDIR=
CPCLIBDIR=
CPCLIB=
AC_ARG_WITH(cpc-dir,
AC_HELP_STRING([--with-cpc-dir=CPCDIR],
[give the path for CPC, default: /usr]),
[CPCDIR="$withval/"])
AC_ARG_WITH(cpc-inc-dir,
AC_HELP_STRING([--with-cpc-inc-dir=CPCINCDIR],
[give the path for CPC-include files, default: CPCDIR/include]),
[CPCINCDIR="-I$withval"],
[AS_IF([test x"$CPCDIR" != x], [CPCINCDIR="-I$CPCDIR"include])])
AC_ARG_WITH(cpc-lib-dir,
AC_HELP_STRING([--with-cpc-lib-dir=CPCLIBDIR],
[give the path for CPC-libraries, default: CPCDIR/lib]),
[CPCLIBDIR="-L$withval"],
[AS_IF([test x"$CPCDIR" != x], [CPCLIBDIR="-L$CPCDIR"lib])])
AC_ARG_WITH(cpc-lib,
AC_HELP_STRING([--with-cpc-lib=CPCLIB], [use given cpc lib, default: -lcpc]),
[CPCLIB="$withval"])
sav_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $CPCINCDIR"
AC_CHECK_HEADER([libcpc.h], [],
[
AC_MSG_NOTICE([error: no libcpc.h found; check path for CPC package first...])
cpc_error="yes"
])
CPPFLAGS=$sav_CPPFLAGS
AS_IF([test x"$CPCLIB" = x -a x"$cpc_error" = "xno"],
[
sav_LIBS=$LIBS
LIBS="$LIBS $CPCLIBDIR -lcpc"
AC_MSG_CHECKING([whether linking with -lcpc works])
AC_TRY_LINK([],[],
[AC_MSG_RESULT([yes]); CPCLIB=-lcpc],[AC_MSG_RESULT([no])])
LIBS=$sav_LIBS
])
AS_IF([test x"$CPCLIB" = x -a x"$cpc_error" = "xno"],
[
AC_MSG_NOTICE([error: no libcpc found; check path for CPC package first...])
cpc_error="yes"
])
AS_IF([test x"$cpc_error" = "xno"],
[
AC_MSG_CHECKING([whether CPC version = 2])
sav_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $CPCINCDIR"
AC_TRY_COMPILE([#include <libcpc.h>],
[
#ifndef CPC_VER_CURRENT
# error "CPC_VER_CURRENT not defined"
#elif CPC_VER_CURRENT != 2
# error "CPC_VER_CURRENT != 2"
#endif
],
[AC_MSG_RESULT([yes])],
[
AC_MSG_RESULT([no])
AC_MSG_NOTICE([error: CPC version could not be determined and/or is incompatible (!= 2)
See \`config.log' for more details.])
cpc_error="yes"
])
CPPFLAGS=$sav_CPPFLAGS
])
AS_IF([test x"$CPCLIB" != x -a x"$cpc_error" = "xno"], [have_cpc="yes"])
AC_SUBST(CPCINCDIR)
AC_SUBST(CPCLIBDIR)
AC_SUBST(CPCLIB)
])

Просмотреть файл

@ -1,119 +0,0 @@
AC_DEFUN([ACVT_CROSS],
[
CROSS_PREFIX=
comp_for_build_given="no"
AC_ARG_VAR(CC_FOR_BUILD, [C compiler command for build system])
AC_ARG_VAR(CFLAGS_FOR_BUILD, [C compiler flags for build system])
AC_ARG_VAR(CPP_FOR_BUILD, [C preprocessor for build system])
AC_ARG_VAR(CXX_FOR_BUILD, [C++ compiler command for build system])
AC_ARG_VAR(CXXFLAGS_FOR_BUILD, [C++ compiler flags for build system])
AC_ARG_VAR(CXXCPP_FOR_BUILD, [C++ preprocessor for build system])
AC_ARG_VAR(CPPFLAGS_FOR_BUILD, [C/C++/Objective C preprocessor flags for build system])
AC_ARG_VAR(LDFLAGS_FOR_BUILD, [linker flags for build system])
AC_ARG_VAR(LIBS_FOR_BUILD, [libraries to pass to the linker for build system])
AS_IF([test x"$cross_compiling" != "xyes"],
[
# reset *_FOR_BUILD variables, if no cross compiling
CC_FOR_BUILD=$CC; CFLAGS_FOR_BUILD=$CFLAGS; CPP_FOR_BUILD=$CPP
CXX_FOR_BUILD=$CXX; CXXFLAGS_FOR_BUILD=$CXXFLAGS; CXXCPP_FOR_BUILD=$CXXCPP
CPPFLAGS_FOR_BUILD=$CPPFLAGS; LDFLAGS_FOR_BUILD=$LDFLAGS; LIBS_FOR_BUILD=$LIBS
],
[
AC_MSG_CHECKING([for C compiler for build system ($build)])
AS_IF([test x"$CC_FOR_BUILD" = x],
[AC_MSG_RESULT([$CC])], [AC_MSG_RESULT([$CC_FOR_BUILD])])
AC_MSG_CHECKING([for C++ compiler for build system ($build)])
AS_IF([test x"$CXX_FOR_BUILD" = x],
[AC_MSG_RESULT([$CXX])], [AC_MSG_RESULT([$CXX_FOR_BUILD])])
AS_IF([test x"$CC_FOR_BUILD" = x -a x"$CXX_FOR_BUILD" != x],
[
AC_MSG_ERROR([no C compiler command for build system given
Set \`CC_FOR_BUILD' to the C compiler of build system.])
])
AS_IF([test x"$CXX_FOR_BUILD" = x -a x"$CC_FOR_BUILD" != x],
[
AC_MSG_ERROR([no C++ compiler command for build system given
Set \`CXX_FOR_BUILD' to the C++ compiler of build system.])
])
AS_IF([test x"$CC_FOR_BUILD" != x -a x"$CXX_FOR_BUILD" != x],
[
comp_for_build_given="yes"
])
AS_IF([test x"$CC_FOR_BUILD" = x -a x"$CXX_FOR_BUILD" = x],
[
AC_MSG_NOTICE([no C/C++ compiler command for build system given
In cross compile mode, it's recommended to build the compiler wrappers and OPARI for the build system. Set \`CC_FOR_BUILD' and \`CXX_FOR_BUILD' to the C/C++ compiler of build system.])
CC_FOR_BUILD=$CC
CXX_FOR_BUILD=$CXX
])
AS_IF([test x"$CFLAGS_FOR_BUILD" = x], [CFLAGS_FOR_BUILD=$CFLAGS])
AS_IF([test x"$CXXFLAGS_FOR_BUILD" = x], [CXXFLAGS_FOR_BUILD=$CXXFLAGS])
AS_IF([test x"$CPPFLAGS_FOR_BUILD" = x], [CPPFLAGS_FOR_BUILD=$CPPFLAGS])
AS_IF([test x"$LDFLAGS_FOR_BUILD" = x], [LDFLAGS_FOR_BUILD=$LDFLAGS])
AS_IF([test x"$LIBS_FOR_BUILD" = x], [LIBS_FOR_BUILD=$LIBS])
AS_IF([test x"$comp_for_build_given" = "xyes"],
[
sav_CPPFLAGS=$CPPFLAGS; sav_LDFLAGS=$LDFLAGS; sav_LIBS=$LIBS
CPPFLAGS=$CPPFLAGS_FOR_BUILD; LDFLAGS=$LDFLAGS_FOR_BUILD; LIBS=$LIBS_FOR_BUILD
sav_CC=$CC; sav_CFLAGS=$CFLAGS; sav_CPP=$CPP
CC=$CC_FOR_BUILD; CFLAGS=$CFLAGS_FOR_BUILD
AC_MSG_CHECKING([whether the C compiler for build system works])
AC_TRY_LINK([], [],
[AC_MSG_RESULT([yes])],
[AC_MSG_ERROR([C compiler for build system cannot create executables
See \`config.log' for more details.])])
AS_IF([test x"$CPP_FOR_BUILD" = x],
[
unset CPP
unset ac_cv_prog_CPP # clear cache variable for CPP
AC_PROG_CPP
CPP_FOR_BUILD=$CPP
])
CC=$sav_CC; CFLAGS=$sav_CFLAGS; CPP=$sav_CPP
AC_LANG([C++])
sav_CXX=$CXX; sav_CXXFLAGS=$CXXFLAGS; sav_CXXCPP=$CXXCPP
CXX=$CXX_FOR_BUILD; CXXFLAGS=$CXXFLAGS_FOR_BUILD
AC_MSG_CHECKING([whether the C++ compiler for build system works])
AC_TRY_LINK([], [],
[AC_MSG_RESULT([yes])],
[AC_MSG_ERROR([C++ compiler for build system cannot create executables
See \`config.log' for more details.])])
AS_IF([test x"$CXXCPP_FOR_BUILD" = x],
[
unset CXXCPP
unset ac_cv_prog_CXXCPP # clear cache variable for CXXCPP
AC_PROG_CXXCPP
CXXCPP_FOR_BUILD=$CXXCPP
])
CXX=$sav_CXX; CXXFLAGS=$sav_CXXFLAGS; CXXCPP=$sav_CXXCPP
AC_LANG([C])
CPPFLAGS=$sav_CPPFLAGS; LDFLAGS=$sav_LDFLAGS; LIBS=$sav_LIBS
])
])
# Check prefix for cross-tool's executables
AC_ARG_WITH(cross-prefix,
AC_HELP_STRING([--with-cross-prefix=PREFIX],
[prefix for cross-tool's executables (e.g. PREFIXvtcc, PREFIXvtfort), default: cross-]),
[
AS_IF([test x"$cross_compiling" = "xyes" -a x"$comp_for_build_given" = "xyes"],
[
AS_IF([test x"$withval" = "xyes"], [CROSS_PREFIX="cross-"],
[AS_IF([test x"$withval" != "xno"], [CROSS_PREFIX="$withval"])])
])
])
AC_SUBST(CROSS_PREFIX)
])

Просмотреть файл

@ -1,22 +0,0 @@
AC_DEFUN([ACVT_CSFS],
[
have_csfs="no"
AC_MSG_CHECKING([if build filesystem is case sensitive])
cat > conftest.out << EOF
lowercase
EOF
cat > CONFTEST.OUT <<EOF
uppercase
EOF
AS_IF([test "`cat conftest.out`" = "lowercase"],
[have_csfs="yes"])
AC_MSG_RESULT([$have_csfs])
rm -f conftest.out CONFTEST.OUT
])

Просмотреть файл

@ -1,79 +0,0 @@
AC_DEFUN([ACVT_CTOOL],
[
ctool_error="no"
have_ctool="no"
CTOOLDIR=
CTOOLINCDIR=
CTOOLLIBDIR=
CTOOLLIB=
AC_ARG_WITH(ctool-dir,
AC_HELP_STRING([--with-ctool-dir=CTOOLDIR],
[give the path for CTool, default: /usr]),
[CTOOLDIR="$withval/"])
AC_ARG_WITH(ctool-inc-dir,
AC_HELP_STRING([--with-ctool-inc-dir=CTOOLINCDIR],
[give the path for CTool-include files, default: CTOOLDIR/include]),
[CTOOLINCDIR="-I$withval"],
[AS_IF([test x"$CTOOLDIR" != x], [CTOOLINCDIR="-I$CTOOLDIR"include])])
AC_ARG_WITH(ctool-lib-dir,
AC_HELP_STRING([--with-ctool-lib-dir=CTOOLLIBDIR],
[give the path for CTool-libraries, default: CTOOLDIR/lib]),
[CTOOLLIBDIR="-L$withval"],
[AS_IF([test x"$CTOOLDIR" != x], [CTOOLLIBDIR="-L$CTOOLDIR"lib])])
AC_ARG_WITH(ctool-lib,
AC_HELP_STRING([--with-ctool-lib=CTOOLLIB], [use given CTool lib, default: -lctool]),
[CTOOLLIB="$withval"])
AC_LANG([C++])
sav_CXX=$CXX; CXX=$CXX_FOR_BUILD
sav_CXXFLAGS=$CXXFLAGS; CXXFLAGS=$CXXFLAGS_FOR_BUILD
sav_CXXCPP=$CXXCPP; CXXCPP=$CXXCPP_FOR_BUILD
sav_CPPFLAGS=$CPPFLAGS; CPPFLAGS=$CPPFLAGS_FOR_BUILD
sav_LDFLAGS=$LDFLAGS; LDFLAGS=$LDFLAGS_FOR_BUILD
sav_LIBS=$LIBS; LIBS=$LIBS_FOR_BUILD
sav2_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $CTOOLINCDIR"
AC_CHECK_HEADER([ctool/ctool.h], [],
[
AC_MSG_NOTICE([error: no ctool/ctool.h found; check path for CTool package first...])
ctool_error="yes"
])
CPPFLAGS=$sav2_CPPFLAGS
AS_IF([test x"$CTOOLLIB" = x -a x"$ctool_error" = "xno"],
[
sav2_LIBS=$LIBS
LIBS="$LIBS $CTOOLLIBDIR -lctool"
AC_MSG_CHECKING([whether linking with -lctool works])
AC_TRY_LINK([],[],
[AC_MSG_RESULT([yes]); CTOOLLIB=-lctool],[AC_MSG_RESULT([no])])
LIBS=$sav2_LIBS
])
CXX=$sav_CXX
CXXFLAGS=$sav_CXXFLAGS
CXXCPP=$sav_CXXCPP
CPPFLAGS=$sav_CPPFLAGS
LDFLAGS=$sav_LDFLAGS
LIBS=$sav_LIBS
AC_LANG([C])
AS_IF([test x"$CTOOLLIB" = x -a x"$ctool_error" = "xno"],
[
AC_MSG_NOTICE([error: no libctool found; check path for CTool package first...])
ctool_error="yes"
])
AS_IF([test x"$ctool_error" = "xno"], [have_ctool="yes"])
AC_SUBST(CTOOLINCDIR)
AC_SUBST(CTOOLLIBDIR)
AC_SUBST(CTOOLLIB)
])

Просмотреть файл

@ -1,142 +0,0 @@
AC_DEFUN([ACVT_CUDA],
[
cuda_error="no"
cudart_error="no"
have_cuda="no"
have_cudart="no"
CUDATKDIR=
CUDATKINCDIR=
CUDATKLIBDIR=
CUDALIB=
CUDARTLIB=
AC_ARG_VAR(NVCC, [NVIDIA CUDA compiler command])
AC_ARG_WITH(cuda-dir,
AC_HELP_STRING([--with-cuda-dir=CUDATKDIR],
[give the path for CUDA Toolkit, default: /usr/local/cuda]),
[CUDATKDIR="$withval/"], [CUDATKDIR="/usr/local/cuda/"])
AC_ARG_WITH(cuda-inc-dir,
AC_HELP_STRING([--with-cuda-inc-dir=CUDATKINCDIR],
[give the path for CUDA-Toolkit-include files, default: CUDATKDIR/include]),
[CUDATKINCDIR="-I$withval"],
[AS_IF([test x"$CUDATKDIR" != x], [CUDATKINCDIR="-I$CUDATKDIR"include])])
AC_ARG_WITH(cuda-lib-dir,
AC_HELP_STRING([--with-cuda-lib-dir=CUDATKLIBDIR],
[give the path for CUDA-Toolkit-libraries, default: CUDATKDIR/lib64]),
[CUDATKLIBDIR="-L$withval"],
[AS_IF([test x"$CUDATKDIR" != x], [CUDATKLIBDIR="-L$CUDATKDIR"lib64])])
AC_ARG_WITH(cuda-lib,
AC_HELP_STRING([--with-cuda-lib=CUDALIB], [use given CUDA driver library, default: -lcuda]),
[CUDALIB="$withval"])
AC_ARG_WITH(cudart-lib,
AC_HELP_STRING([--with-cudart-lib=CUDARTLIB], [use given CUDA runtime library, default: -lcudart]),
[CUDARTLIB="$withval"])
AS_IF([test x"$cuda_error" = "xno"],
[
sav_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $CUDATKINCDIR"
AC_CHECK_HEADER([cuda.h], [],
[
AC_MSG_NOTICE([error: no cuda.h found; check path for CUDA Toolkit first...])
cuda_error="yes"
])
CPPFLAGS=$sav_CPPFLAGS
])
AS_IF([test x"$CUDALIB" = x -a x"$cuda_error" = "xno"],
[
sav_LIBS=$LIBS
LIBS="$LIBS $CUDATKLIBDIR -lcuda"
AC_MSG_CHECKING([whether linking with -lcuda works])
AC_TRY_LINK([],[],
[AC_MSG_RESULT([yes]); CUDALIB=-lcuda],[AC_MSG_RESULT([no])])
LIBS=$sav_LIBS
])
AS_IF([test x"$CUDALIB" = x -a x"$cuda_error" = "xno"],
[
AC_MSG_NOTICE([error: no libcuda found; check path for CUDA Toolkit first...])
cuda_error="yes"
])
AS_IF([test x"$cudart_error" = "xno"],
[
sav_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $CUDATKINCDIR"
AC_CHECK_HEADER([cuda_runtime_api.h], [],
[
AC_MSG_NOTICE([error: no cuda_runtime_api.h found; check path for CUDA Toolkit first...])
cudart_error="yes"
])
CPPFLAGS=$sav_CPPFLAGS
])
AS_IF([test x"$CUDARTLIB" = x -a x"$cudart_error" = "xno"],
[
sav_LIBS=$LIBS
LIBS="$LIBS $CUDATKLIBDIR -lcudart"
AC_MSG_CHECKING([whether linking with -lcudart works])
AC_TRY_LINK([],[],
[AC_MSG_RESULT([yes]); CUDARTLIB=-lcudart],[AC_MSG_RESULT([no])])
LIBS=$sav_LIBS
])
AS_IF([test x"$CUDARTLIB" = x -a x"$cudart_error" = "xno"],
[
AC_MSG_NOTICE([error: no libcudart found; check path for CUDA Toolkit first...])
cudart_error="yes"
])
AS_IF([test x"$cudart_error" = "xno"],
[
AC_MSG_CHECKING([whether CUDA runtime version >= 3.0])
sav_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $CUDATKINCDIR"
AC_TRY_COMPILE([#include "cuda_runtime_api.h"],
[
#ifndef CUDART_VERSION
# error "CUDART_VERSION not defined"
#elif CUDART_VERSION < 3000
# error "CUDART_VERSION < 3000"
#endif
],
[AC_MSG_RESULT([yes])],
[
AC_MSG_RESULT([no])
AC_MSG_NOTICE([error: CUDA runtime version could not be determined and/or is incompatible (< 3.0)
See \`config.log' for more details.])
cudart_error="yes"
])
CPPFLAGS=$sav_CPPFLAGS
])
AS_IF([test x"$cudart_error" = "xno"],
[
AC_CHECK_PROG(NVCC, nvcc, nvcc, , [$PATH$PATH_SEPARATOR$CUDATKDIR"bin/"])
have_cudart="yes"
])
AS_IF([test x"$cuda_error" = "xno"],
[
have_cuda="yes"
],
[
dnl if no CUDA found, remove content of CUDATKLIBDIR to prevent adding them
dnl to the linker flags when using the VT compiler wrappers
CUDATKLIBDIR=
])
AC_SUBST(CUDATKDIR)
AC_SUBST(CUDATKINCDIR)
AC_SUBST(CUDATKLIBDIR)
AC_SUBST(CUDALIB)
AC_SUBST(CUDARTLIB)
])

Просмотреть файл

@ -1,85 +0,0 @@
AC_DEFUN([ACVT_CUDARTWRAP],
[
cudartwrap_error="no"
check_cudartwrap="yes"
have_cudartwrap="no"
cudartshlib_pathname=
AC_REQUIRE([ACVT_CUPTI])
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"$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]),
[
AS_IF([test x"$withval" = "xyes" -o x"$withval" = "xno"],
[AC_MSG_ERROR([value of '--with-cudart-shlib' not properly set])])
cudartshlib_pathname=$withval
])
])
AS_IF([test x"$cudartwrap_error" = "xno"],
[
AC_MSG_CHECKING([for pathname of shared CUDA runtime library])
AS_IF([test x"$cudartshlib_pathname" != x],
[
AC_MSG_RESULT([skipped (--with-cudart-shlib=$cudartshlib_pathname)])
],
[
AS_IF([test x"$have_rtld_next" = "xyes"],
[
AC_MSG_RESULT([not needed])
],
[
AS_IF([test x"$CUDATKLIBDIR" != x],
[cudartlib_dir=`echo $CUDATKLIBDIR | sed s/\-L//`])
cudartshlib_pathname=$cudartlib_dir`echo $CUDARTLIB | sed s/\-l/lib/`".so"
AS_IF([! test -f $cudartshlib_pathname],
[
AC_MSG_RESULT([unknown])
AC_MSG_NOTICE([error: could not determine pathname of shared CUDA runtime library])
cudartwrap_error="yes"
],
[
AC_MSG_RESULT([$cudartshlib_pathname])
])
])
])
])
AS_IF([test x"$cudartwrap_error" = "xno"],
[
AS_IF([test x"$cudartshlib_pathname" != x],
[
AC_DEFINE_UNQUOTED([CUDARTSHLIB_PATHNAME],
["$cudartshlib_pathname"], [pathname of shared CUDA runtime library])
])
have_cudartwrap="yes"
])
])
dnl if CUPTI found, CUPTILIB already contains CUDATKLIBDIR and CUDARTLIB;
dnl remove content of CUDATKLIBDIR and CUDARTLIB to prevent double linking when
dnl using the VT compiler wrappers
AS_IF([test x"$have_cupti" = "xyes"],
[
CUDATKLIBDIR=
CUDARTLIB=
])
])

Просмотреть файл

@ -1,132 +0,0 @@
AC_DEFUN([ACVT_CUPTI],
[
cupti_error="no"
check_cupti="yes"
force_cupti="no"
have_cupti="no"
have_cupti_events="no"
have_cupti_callbacks="no"
have_cupti_activity="no"
CUPTIDIR=
CUPTIINCDIR=
CUPTILIBDIR=
CUPTILIB=
AC_REQUIRE([ACVT_CUDA])
AC_ARG_ENABLE(cupti,
AC_HELP_STRING([--enable-cupti],
[enable support for tracing CUDA via CUPTI, default: enable if found by configure]),
[AS_IF([test x"$enableval" = "xyes"], [force_cupti="yes"], [check_cupti="no"])])
AC_ARG_WITH(cupti-dir,
AC_HELP_STRING([--with-cupti-dir=CUPTIDIR],
[give the path for CUPTI, default: /usr]),
[CUPTIDIR="$withval/"],
[AS_IF([test x"$CUDATKDIR" != x], [CUPTIDIR="$CUDATKDIR"extras/CUPTI/])])
AC_ARG_WITH(cupti-inc-dir,
AC_HELP_STRING([--with-cupti-inc-dir=CUPTIINCDIR],
[give the path for CUPTI-include files, default: CUPTIDIR/include]),
[CUPTIINCDIR="-I$withval"],
[AS_IF([test x"$CUPTIDIR" != x], [CUPTIINCDIR="-I$CUPTIDIR"include])])
AC_ARG_WITH(cupti-lib-dir,
AC_HELP_STRING([--with-cupti-lib-dir=CUPTILIBDIR],
[give the path for CUPTI-libraries, default: CUPTIDIR/lib64]),
[CUPTILIBDIR="-L$withval"],
[AS_IF([test x"$CUPTIDIR" != x], [CUPTILIBDIR="-L$CUPTIDIR"lib64])])
AC_ARG_WITH(cupti-lib,
AC_HELP_STRING([--with-cupti-lib=CUPTILIB], [use given cupti lib, default: -lcupti CUDALIB]),
[CUPTILIB="$withval"])
AS_IF([test "$check_cupti" = "yes"],
[
sav_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $CUPTIINCDIR $CUDATKINCDIR"
AC_CHECK_HEADER([cupti.h], [],
[
AC_MSG_NOTICE([error: no cupti.h found; check path for CUPTI package first...])
cupti_error="yes"
])
CPPFLAGS=$sav_CPPFLAGS
AS_IF([test x"$CUPTILIB" = x -a x"$cupti_error" = "xno"],
[
sav_LIBS=$LIBS
LIBS="$LIBS $CUPTILIBDIR -lcupti $CUDATKLIBDIR $CUDALIB $CUDARTLIB"
AC_MSG_CHECKING([whether linking with -lcupti works])
AC_TRY_LINK([],[],
[AC_MSG_RESULT([yes]); CUPTILIB="-lcupti $CUDATKLIBDIR $CUDALIB $CUDARTLIB"],[AC_MSG_RESULT([no])])
LIBS=$sav_LIBS
])
AS_IF([test x"$CUPTILIB" = x -a x"$cupti_error" = "xno"],
[
AC_MSG_NOTICE([error: no libcupti found; check path for CUPTI package first...])
cupti_error="yes"
])
AS_IF([test x"$cupti_error" = "xno"],
[
sav_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $CUPTIINCDIR $CUDATKINCDIR"
AC_MSG_CHECKING([whether CUPTI API version >= 2 & <= 4])
AC_TRY_COMPILE([#include "cupti_version.h"],
[
#ifndef CUPTI_API_VERSION
# error "CUPTI_API_VERSION not defined"
#elif CUPTI_API_VERSION < 2
# error "CUPTI_API_VERSION < 2"
#elif CUPTI_API_VERSION > 4
# error "CUPTI_API_VERSION > 4"
#endif
],
[
AC_MSG_RESULT([yes])
have_cupti="yes"
],
[
AC_MSG_RESULT([no])
AC_MSG_NOTICE([error: CUPTI API version could not be determined and/or is incompatible (< 2 o. > 4)
See \`config.log' for more details.])
cupti_error="yes"
])
CPPFLAGS=$sav_CPPFLAGS
])
AS_IF([test x"$cupti_error" = "xno"],
[
sav_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $CUPTIINCDIR $CUDATKINCDIR"
AC_CHECK_HEADER([cupti_events.h], [have_cupti_events="yes"],
[
AC_MSG_NOTICE([error: no cupti_events.h found])
])
AC_CHECK_HEADER([cupti_callbacks.h], [have_cupti_callbacks="yes"],
[
AC_MSG_NOTICE([error: no cupti_callbacks.h found])
])
AC_CHECK_HEADER([cupti_activity.h], [have_cupti_activity="yes"],
[
AC_MSG_NOTICE([error: no cupti_activity.h found])
])
CPPFLAGS=$sav_CPPFLAGS
])
])
dnl if no CUPTI found, remove content of CUPTILIBDIR to prevent adding them
dnl to the linker flags when using the VT compiler wrappers
AS_IF([test x"$have_cupti" = "xno"],
[CUPTILIBDIR=])
AC_SUBST(CUPTIINCDIR)
AC_SUBST(CUPTILIBDIR)
AC_SUBST(CUPTILIB)
])

Просмотреть файл

@ -1,67 +0,0 @@
AC_DEFUN([ACVT_CXXRTLIB],
[
cxxrtlib_error="no"
cxxrtlib=
AC_ARG_WITH(cxxrtlib,
AC_HELP_STRING([--with-cxxrtlib=CXXRTLIB],
[use given C++ runtime library, default: automatically by configure]),
[
AS_IF([test x"$withval" = "xyes" -o x"$withval" = "xno"],
[AC_MSG_ERROR([value of '--with-cxxrtlib' not properly set])])
cxxrtlib=$withval
])
AC_MSG_CHECKING([for C++ runtime library])
AS_IF([test x"$cxxrtlib" = x],
[
AC_LANG([C++])
AC_TRY_COMPILE([#include <list>],
[
std::list<int> l;
l.push_back(100);
],
[cp -f conftest.$ac_objext conftest_cxxrtlib.$ac_objext],
[cxxrtlib_error="yes"])
AC_LANG([C])
libs_to_check="-lstdc++ \
-lCrun -lCstd \
-lstlport \
-libmc++;-lstdc++;-lm;-lc \
-lxlopt;-lxl;-libmc++;-lstdc++;-lm;-lc \
-lC \
-lstd;-lC \
-lstd;-lC;-lzceh \
-lstdz;-lCz;-lzceh \
-lstdz;-lCz;-lzceh;-lgcc_eh \
-lstdc++;-lm;-lc \
-limf;-lm;-lipgo;-lstdc++;-lirc;-lipr;-lirc;-lc;-lirc_s;-ldl;-lc \
-lC++ \
-lcray-c++-rts;-lcraystdc++"
AS_IF([test x"$cxxrtlib_error" = "xno"],
[
for lib in $libs_to_check
do
lib=`echo $lib | sed s/\;/\ /g`
eval "$CC -o conftest_cxxrtlib$ac_exeext $CFLAGS $LDFLAGS conftest_cxxrtlib.$ac_objext $LIBS $lib >/dev/null 2>&1"
AS_IF([test x"$?" = "x0"],
[
cxxrtlib="$lib"
break
])
done
rm -f conftest_cxxrtlib*
AS_IF([test x"$cxxrtlib" = x], [cxxrtlib_error="yes"])
])
])
AS_IF([test x"$cxxrtlib_error" = "xno"],
[AC_MSG_RESULT([$cxxrtlib])], [AC_MSG_RESULT([unknown])])
])

Просмотреть файл

@ -1,99 +0,0 @@
AC_DEFUN([ACVT_DL],
[
dl_error="no"
have_dl="no"
have_rtld_default="no"
have_rtld_next="no"
DLDIR=
DLINCDIR=
DLLIBDIR=
DLLIB=
AC_REQUIRE([ACVT_PLATFORM])
AC_ARG_WITH(dl-dir,
AC_HELP_STRING([--with-dl-dir=DLDIR], [give the path for libdl, default: /usr]),
[DLDIR="$withval/"])
AC_ARG_WITH(dl-inc-dir,
AC_HELP_STRING([--with-dl-inc-dir=DLINCDIR],
[give the path for libdl-include files, default: DLDIR/include]),
[DLINCDIR="-I$withval"],
[AS_IF([test x"$DLDIR" != x], [DLINCDIR="-I$DLDIR"include])])
AC_ARG_WITH(dl-lib-dir,
AC_HELP_STRING([--with-dl-lib-dir=DLLIBDIR],
[give the path for libdl-libraries, default: DLDIR/lib]),
[DLLIBDIR="-L$withval"],
[AS_IF([test x"$DLDIR" != x], [DLLIBDIR="-L$DLDIR"lib])])
AC_ARG_WITH(dl-lib,
AC_HELP_STRING([--with-dl-lib=DLLIB], [use given libdl lib, default: -ldl]),
[DLLIB="$withval"])
AS_IF([test "$PLATFORM" = "bgl"],
[
AC_MSG_NOTICE([error: dynamic linking library (libdl) isn't suitable on this platform])
dl_error="yes"
])
AS_IF([test "$PLATFORM" = "bgp" -o "$PLATFORM" = "bgq"],
[
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"],
[
ac_cv_have_decl_RTLD_DEFAULT="no"
ac_cv_have_decl_RTLD_NEXT="no"
])
AS_IF([test x"$dl_error" = "xno"],
[
sav_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $DLINCDIR"
AC_CHECK_HEADER([dlfcn.h], [],
[
AC_MSG_NOTICE([error: no dlfcn.h found; check path for libdl package first...])
dl_error="yes"
])
CPPFLAGS=$sav_CPPFLAGS
])
AS_IF([test x"$DLLIB" = x -a x"$dl_error" = "xno"],
[
sav_LIBS=$LIBS
LIBS="$LIBS $DLLIBDIR -ldl"
AC_MSG_CHECKING([whether linking with -ldl works])
AC_TRY_LINK([],[],
[AC_MSG_RESULT([yes]); DLLIB=-ldl],[AC_MSG_RESULT([no])])
LIBS=$sav_LIBS
])
AS_IF([test x"$DLLIB" = x -a x"$dl_error" = "xno"],
[
AC_MSG_NOTICE([error: no libdl found; check path for libdl package first...])
dl_error="yes"
])
AS_IF([test x"$dl_error" = "xno"],
[
have_dl="yes"
AC_DEFINE([HAVE_DL], [1], [Define to 1 if you have the DL.])
sav_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $DLINCDIR -D_GNU_SOURCE"
AC_CHECK_DECLS([RTLD_DEFAULT], [have_rtld_default="yes"], [], [#include <dlfcn.h>])
AC_CHECK_DECLS([RTLD_NEXT], [have_rtld_next="yes"], [], [#include <dlfcn.h>])
CPPFLAGS=$sav_CPPFLAGS
])
AC_SUBST(DLINCDIR)
AC_SUBST(DLLIBDIR)
AC_SUBST(DLLIB)
])

Просмотреть файл

@ -1,136 +0,0 @@
AC_DEFUN([ACVT_DYNINST],
[
dyninst_error="no"
dynattlib_error="no"
check_dyninst="yes"
force_dyninst="no"
check_dynattlib="yes"
force_dynattlib="no"
build_dynattlib="no"
have_dyninst="no"
DYNIDIR=
DYNIINCDIR=
DYNILIBDIR=
DYNILIB=
VTDYNATTLIB=
AC_ARG_ENABLE(dyninst,
AC_HELP_STRING([--enable-dyninst],
[enable support for binary instrumentation by using Dyninst, default: enable if found by configure]),
[AS_IF([test x"$enableval" = "xyes"], [force_dyninst="yes"], [check_dyninst="no"])])
AC_ARG_ENABLE(dyninst-attlib,
AC_HELP_STRING([--enable-dyninst-attlib],
[build shared library which attaches Dyninst to running application, default: enable if Dyninst found by configure and system supports shared libraries]),
[AS_IF([test x"$enableval" = "xyes"], [force_dyninst="yes"; check_dyninst="yes"; force_dynattlib="yes"; build_dynattlib="yes"], [check_dynattlib="no"])])
AC_ARG_WITH(dyninst-dir,
AC_HELP_STRING([--with-dyninst-dir=DYNIDIR], [give the path for Dyninst, default: /usr]),
[DYNIDIR="$withval/"])
AC_ARG_WITH(dyninst-inc-dir,
AC_HELP_STRING([--with-dyninst-inc-dir=DYNIINCDIR],
[give the path for Dyninst-include files, default: DYNIDIR/include]),
[DYNIINCDIR="-I$withval"],
[AS_IF([test x"$DYNIDIR" != x], [DYNIINCDIR="-I$DYNIDIR"include])])
AC_ARG_WITH(dyninst-lib-dir,
AC_HELP_STRING([--with-dyninst-lib-dir=DYNILIBDIR],
[give the path for Dyninst-libraries, default: DYNIDIR/lib]),
[DYNILIBDIR="-L$withval"],
[AS_IF([test x"$DYNIDIR" != x], [DYNILIBDIR="-L$DYNIDIR"lib])])
AC_ARG_WITH(dyninst-lib,
AC_HELP_STRING([--with-dyninst-lib=DYNILIB], [use given Dyninst lib, default: -ldyninstAPI]),
[DYNILIB="$withval"])
AS_IF([test "$check_dyninst" = "yes"],
[
AC_LANG([C++])
AS_IF([test x"$dyninst_error" = "xno"],
[
sav_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $DYNIINCDIR"
AC_CHECK_HEADER([BPatch.h], [],
[
AC_MSG_NOTICE([error: no BPatch.h found; check path for Dyninst package first...])
dyninst_error="yes"
])
CPPFLAGS=$sav_CPPFLAGS
])
AS_IF([test x"$DYNILIB" = x -a x"$dyninst_error" = "xno"],
[
sav_LIBS=$LIBS
LIBS="$LIBS $DYNILIBDIR -ldyninstAPI"
AC_MSG_CHECKING([whether linking with -ldyninstAPI works])
AC_TRY_LINK([],[],
[AC_MSG_RESULT([yes]); DYNILIB="-ldyninstAPI"],
[AC_MSG_RESULT([no])])
LIBS=$sav_LIBS
])
AS_IF([test x"$DYNILIB" = x -a x"$dyninst_error" = "xno"],
[
AC_MSG_NOTICE([error: no libdyninstAPI found; check path for Dyninst package first...])
dyninst_error="yes"
])
AS_IF([test x"$dyninst_error" = "xno"],
[
AC_MSG_CHECKING([whether Dyninst version >= 6.1])
sav_CXXFLAGS=$CXXFLAGS
CXXFLAGS="$CXXFLAGS $DYNIINCDIR"
AC_TRY_COMPILE([#include <BPatch.h>],
[
#ifndef DYNINST_6_1
# error "DYNINST_6_1 not defined"
#endif
],
[AC_MSG_RESULT([yes])],
[
AC_MSG_RESULT([no])
AC_MSG_NOTICE([error: Dyninst version could not be determined and/or is incompatible (< 6.1)
See \`config.log' for more details.])
dyninst_error="yes"
])
CXXFLAGS=$sav_CXXFLAGS
])
AC_LANG([C])
AS_IF([test x"$dyninst_error" = "xno"],
[
have_dyninst="yes"
ACVT_CONF_SUBSUBTITLE([Dyninst attach library])
AS_IF([test x"$check_dynattlib" = "xyes"],
[
AC_MSG_CHECKING([whether we can build shared libraries])
AS_IF([test x"$enable_shared" = "xyes"],
[
AC_MSG_RESULT([yes])
build_dynattlib="yes"
VTDYNATTLIB="-lvt-dynatt"
],
[
AC_MSG_RESULT([no])
dynattlib_error="yes"
])
],
[
AS_IF([test x"$enable_config_titles" = "xyes"],
[AC_MSG_NOTICE([disabled via command line switch])])
])
])
])
AC_SUBST(DYNIINCDIR)
AC_SUBST(DYNILIBDIR)
AC_SUBST(DYNILIB)
AC_SUBST(VTDYNATTLIB)
])

Просмотреть файл

@ -1,26 +0,0 @@
AC_DEFUN([ACVT_ETIMESYNC],
[
etimesync_error="no"
check_etimesync="yes"
force_etimesync="no"
build_etimesync="no"
AC_ARG_ENABLE(etimesync,
AC_HELP_STRING([--enable-etimesync],
[enable enhanced time synchronization support, default: enable if LAPACK found by configure]),
[AS_IF([test x"$enableval" = "xyes"], [force_etimesync="yes"], [check_etimesync="no"])])
AS_IF([test x"$check_etimesync" = "xyes"],
[
AS_IF([test x"$math_error" = x], [ACVT_MATH])
AS_IF([test x"$have_math" = "xno"], [etimesync_error="yes"])
AS_IF([test x"$etimesync_error" = "xno"],
[
ACVT_CLAPACK
AS_IF([test x"$have_clapack" = "xyes"],
[build_etimesync="yes"], [etimesync_error="yes"])
])
])
])

Просмотреть файл

@ -1,34 +0,0 @@
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 <sys/wait.h>])
sav_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE -D_SVID_SOURCE -D_BSD_SOURCE"
AC_CHECK_DECLS([environ], [], [], [#include <unistd.h>])
AC_CHECK_FUNCS([execvpe fexecve waitid wait3 wait4])
CPPFLAGS=$sav_CPPFLAGS
have_execwrap="yes"
])
])
])

Просмотреть файл

@ -1,46 +0,0 @@
AC_DEFUN([ACVT_GETCPU],
[
getcpu_error="no"
check_getcpu="yes"
force_getcpu="no"
have_getcpu="no"
AC_ARG_ENABLE(cpuidtrace,
AC_HELP_STRING([--enable-cpuidtrace], [enable CPU ID tracing support, default: enable if found by configure]),
[AS_IF([test x"$enableval" = "xyes"], [force_getcpu="yes"], [check_getcpu="no"])])
AS_IF([test x"$check_getcpu" = "xyes"],
[
AC_CHECK_HEADER([sched.h], [],
[
AC_MSG_NOTICE([error: no sched.h found])
getcpu_error="yes"
])
AS_IF([test x"$getcpu_error" = "xno"],
[
sav_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
AC_CHECK_FUNC([sched_getcpu], [], [getcpu_error="yes"])
CPPFLAGS=$sav_CPPFLAGS
])
AS_IF([test x"$getcpu_error" = "xno" -a x"$cross_compiling" = "xno"],
[
AC_MSG_CHECKING([whether sched_getcpu works])
AC_TRY_RUN(
[
#define _GNU_SOURCE
#include <sched.h>
int main() { return (sched_getcpu() != -1) ? 0 : 1; }
],
[AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]); getcpu_error="yes"], [])
])
AS_IF([test x"$getcpu_error" = "xno"],
[
have_getcpu="yes"
])
])
])

Просмотреть файл

@ -1,155 +0,0 @@
AC_DEFUN([ACVT_IOFSL],
[
iofsl_error="no"
check_iofsl="yes"
force_iofsl="no"
have_iofsl="no"
zoidfs_lib_default="-lzoidfsclient -lzoidfs-util -lzoidfshints -liofsl-c-util"
bmi_lib_default="-lbmi -lpthread"
ZOIDFSDIR=
ZOIDFSINCDIR=
ZOIDFSLIBDIR=
ZOIDFSLIB=
BMIDIR=
BMIINCDIR=
BMILIBDIR=
BMILIB=
IOFSLSCRIPTS=
AC_ARG_ENABLE(iofsl,
AC_HELP_STRING([--enable-iofsl],
[enable IOFSL support, default: enable if found by configure]),
[AS_IF([test x"$enableval" = "xyes"], [force_iofsl="yes"], [check_iofsl="no"])])
AC_ARG_WITH(zoidfs-dir,
AC_HELP_STRING([--with-zoidfs-dir=ZOIDFSDIR], [give the path for ZOIDFS, default: /usr]),
[ZOIDFSDIR="$withval/"])
AC_ARG_WITH(zoidfs-inc-dir,
AC_HELP_STRING([--with-zoidfs-inc-dir=ZOIDFSINCDIR],
[give the path for ZOIDFS-include files, default: ZOIDFSDIR/include]),
[ZOIDFSINCDIR="-I$withval"],
[AS_IF([test x"$ZOIDFSDIR" != x], [ZOIDFSINCDIR="-I$ZOIDFSDIR"include])])
AC_ARG_WITH(zoidfs-lib-dir,
AC_HELP_STRING([--with-zoidfs-lib-dir=ZOIDFSLIBDIR],
[give the path for ZOIDFS-libraries, default: ZOIDFSDIR/lib]),
[ZOIDFSLIBDIR="-L$withval"],
[AS_IF([test x"$ZOIDFSDIR" != x], [ZOIDFSLIBDIR="-L$ZOIDFSDIR"lib])])
AC_ARG_WITH(zoidfs-lib,
AC_HELP_STRING([--with-zoidfs-lib=ZOIDFSLIB], [use given zoidfs lib, default: $zoidfs_lib_default BMILIBDIR BMILIB]),
[ZOIDFSLIB="$withval"])
AC_ARG_WITH(bmi-dir,
AC_HELP_STRING([--with-bmi-dir=BMIDIR], [give the path for BMI, default: ZOIDFSDIR]),
[BMIDIR="$withval/"])
AC_ARG_WITH(bmi-inc-dir,
AC_HELP_STRING([--with-bmi-inc-dir=BMIINCDIR],
[give the path for BMI-include files, default: BMIDIR/include]),
[BMIINCDIR="-I$withval"],
[AS_IF([test x"$BMIDIR" != x], [BMIINCDIR="-I$BMIDIR"include])])
AC_ARG_WITH(bmi-lib-dir,
AC_HELP_STRING([--with-bmi-lib-dir=BMILIBDIR],
[give the path for BMI-libraries, default: BMIDIR/lib]),
[BMILIBDIR="-L$withval"],
[AS_IF([test x"$BMIDIR" != x], [BMILIBDIR="-L$BMIDIR"lib])])
AC_ARG_WITH(bmi-lib,
AC_HELP_STRING([--with-bmi-lib=BMILIB], [use given bmi lib, default: $bmi_lib_default]),
[BMILIB="$withval"])
AC_ARG_ENABLE(iofsl-scripts,
AC_HELP_STRING([--enable-iofsl-scripts=PLATFORM],
[build IOFSL scripts for given platform, possible values: crayxk6, default: disabled]),
[
AS_IF([test x"$enableval" != "xno"],
[
AS_IF([test x"$enableval" != "xcrayxk6"],
[AC_MSG_ERROR([value of '--enable-iofsl-scripts' not properly set])],
[IOFSLSCRIPTS=$enableval])
])
])
AS_IF([test x"$check_iofsl" = "xyes"],
[
sav_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $ZOIDFSINCDIR $BMIINCDIR"
AC_CHECK_HEADER([bmi.h], [],
[
AC_MSG_NOTICE([error: no bmi.h found; check path for BMI package first...])
iofsl_error="yes"
])
CPPFLAGS=$sav_CPPFLAGS
AS_IF([test x"$BMILIB" = x -a x"$iofsl_error" = "xno"],
[
sav_LIBS=$LIBS
LIBS="$LIBS $ZOIDFSLIBDIR $BMILIBDIR $bmi_lib_default"
AC_MSG_CHECKING([whether linking with $bmi_lib_default works])
AC_TRY_LINK([],[],
[AC_MSG_RESULT([yes]); BMILIB=$bmi_lib_default],[AC_MSG_RESULT([no])])
LIBS=$sav_LIBS
])
AS_IF([test x"$BMILIB" = x -a x"$iofsl_error" = "xno"],
[
AC_MSG_NOTICE([error: no libbmi found; check path for BMI package first...])
iofsl_error="yes"
])
AS_IF([test x"$iofsl_error" = "xno"],
[
sav_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $ZOIDFSINCDIR"
AC_CHECK_HEADER([zoidfs.h], [],
[
AC_MSG_NOTICE([error: no zoidfs.h found; check path for ZOIDFS package first...])
iofsl_error="yes"
])
CPPFLAGS=$sav_CPPFLAGS
AS_IF([test x"$ZOIDFSLIB" = x -a x"$iofsl_error" = "xno"],
[
sav_LIBS=$LIBS
LIBS="$LIBS $ZOIDFSLIBDIR $zoidfs_lib_default $BMILIBDIR $BMILIB"
AC_MSG_CHECKING([whether linking with $zoidfs_lib_default $BMILIBDIR $BMILIB works])
AC_TRY_LINK([],[],
[AC_MSG_RESULT([yes]); ZOIDFSLIB=$zoidfs_lib_default],[AC_MSG_RESULT([no])])
LIBS=$sav_LIBS
])
AS_IF([test x"$ZOIDFSLIB" = x -a x"$iofsl_error" = "xno"],
[
AC_MSG_NOTICE([error: no zoidfs library found; check path for ZOIDFS package first...])
iofsl_error="yes"
])
])
AS_IF([test x"$iofsl_error" = "xno"],
[
have_iofsl="yes"
AC_DEFINE([HAVE_IOFSL], [1], [Define to 1 if VT is configured with IOFSL support.])
],
[
AS_IF([test x"$force_iofsl" = "xyes"], [exit 1])
])
])
AC_SUBST(ZOIDFSDIR)
AC_SUBST(ZOIDFSINCDIR)
AC_SUBST(ZOIDFSLIBDIR)
AC_SUBST(ZOIDFSLIB)
AC_SUBST(BMIDIR)
AC_SUBST(BMIINCDIR)
AC_SUBST(BMILIBDIR)
AC_SUBST(BMILIB)
AC_SUBST(IOFSLSCRIPTS)
])

Просмотреть файл

@ -1,53 +0,0 @@
AC_DEFUN([ACVT_IOWRAP],
[
iowrap_error="no"
check_iowrap="yes"
have_iowrap="no"
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"],
[
AS_IF([test x"$shlibc_pathname" = x],
[
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_DECLS([__fprintf_chk], [], [], [#include <stdio.h>])
CPPFLAGS=$sav_CPPFLAGS
have_iowrap="yes"
])
])
])

Просмотреть файл

@ -1,55 +0,0 @@
AC_DEFUN([ACVT_JAVA],
[
java_error="no"
check_java="yes"
force_java="no"
have_java="no"
VTJAVALIB=
AC_REQUIRE([ACVT_PLATFORM])
AC_ARG_ENABLE(java,
AC_HELP_STRING([--enable-java],
[enable Java support, default: enable if JVMTI found by configure]),
[AS_IF([test x"$enableval" = "xyes"], [force_java="yes"], [check_java="no"])])
AS_IF([test x"$check_java" = "xyes"],
[
AS_IF([test "$PLATFORM" = "bgp" -o "$PLATFORM" = "bgq"],
[
AC_MSG_NOTICE([error: Java tracing not supported on this platform])
java_error="yes"
])
AS_IF([test x"$java_error" = "xno"],
[
AC_MSG_CHECKING([whether we can build shared libraries])
AS_IF([test x"$enable_shared" = "xyes"],
[AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]); java_error="yes"])
])
AS_IF([test x"$java_error" = "xno"],
[
ACVT_JVMTI
AS_IF([test x"$jvmti_error" = "xyes"],
[java_error="yes"])
])
AS_IF([test x"$java_error" = "xno"],
[
AS_IF([test "$PLATFORM" = "macos"],
[
VTJAVALIB="libvt-java.jnilib"
],
[
VTJAVALIB="libvt-java$SHREXT"
])
have_java="yes"
])
])
AC_SUBST(VTJAVALIB)
])

Просмотреть файл

@ -1,50 +0,0 @@
AC_DEFUN([ACVT_JVMTI],
[
jvmti_error="no"
have_jvmti="no"
JVMTIDIR=
JVMTIINCDIR=
AC_REQUIRE([ACVT_PLATFORM])
AC_ARG_WITH(jvmti-dir,
AC_HELP_STRING([--with-jvmti-dir=JVMTIDIR],
[give the path for JVMTI, default: JAVA_HOME]),
[JVMTIDIR="$withval/"],
[AS_IF([test x"$JAVA_HOME" != x], [JVMTIDIR="$JAVA_HOME/"])])
AC_ARG_WITH(jvmti-inc-dir,
AC_HELP_STRING([--with-jvmti-inc-dir=JVMTIINCDIR],
[give the path for JVMTI-include files, default: JVMTI/include]),
[JVMTIINCDIR="-I$withval"],
[AS_IF([test x"$JVMTIDIR" != x], [JVMTIINCDIR="-I$JVMTIDIR"include])])
extra_inc_dir=
case $PLATFORM in
altix | linux)
extra_inc_dir=linux
;;
sun)
extra_inc_dir=solaris
;;
esac
AS_IF([test x"$extra_inc_dir" != x],
[
AS_IF([test x"$JVMTIINCDIR" != x],
[JVMTIINCDIR="$JVMTIINCDIR $JVMTIINCDIR/$extra_inc_dir"],
[JVMTIINCDIR="-I/usr/include/$extra_inc_dir"])
])
sav_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $JVMTIINCDIR"
AC_CHECK_HEADER([jvmti.h], [have_jvmti="yes"],
[
AC_MSG_NOTICE([error: no jvmti.h found; check path for JVMTI package first...])
jvmti_error="yes"
])
CPPFLAGS=$sav_CPPFLAGS
AC_SUBST(JVMTIINCDIR)
])

Просмотреть файл

@ -1,83 +0,0 @@
AC_DEFUN([ACVT_LIBERTY],
[
liberty_error="no"
check_liberty="no"
force_liberty="no"
have_liberty="no"
LIBERTYDIR=
LIBERTYINCDIR=
LIBERTYLIBDIR=
LIBERTYLIB=
AC_ARG_WITH(liberty,
AC_HELP_STRING([--with-liberty], [use libiberty for symbol demangling, default: no]),
[AS_IF([test x"$withval" = "xyes"], [check_liberty="yes"; force_liberty="yes"])])
AC_ARG_WITH(liberty-dir,
AC_HELP_STRING([--with-liberty-dir=LIBERTYDIR], [give the path for LIBERTY, default: /usr]),
[LIBERTYDIR="$withval/"])
AC_ARG_WITH(liberty-inc-dir,
AC_HELP_STRING([--with-liberty-inc-dir=LIBERTYINCDIR],
[give the path for LIBERTY-include files, default: LIBERTYDIR/include]),
[LIBERTYINCDIR="-I$withval"],
[AS_IF([test x"$LIBERTYDIR" != x], [LIBERTYINCDIR="-I$LIBERTYDIR"include])])
AC_ARG_WITH(liberty-lib-dir,
AC_HELP_STRING([--with-liberty-lib-dir=LIBERTYLIBDIR],
[give the path for LIBERTY-libraries, default: LIBERTYDIR/lib]),
[LIBERTYLIBDIR="-L$withval"],
[AS_IF([test x"$LIBERTYDIR" != x], [LIBERTYLIBDIR="-L$LIBERTYDIR"lib])])
AC_ARG_WITH(liberty-lib,
AC_HELP_STRING([--with-liberty-lib=LIBERTYLIB], [use given liberty lib, default: -liberty]),
[LIBERTYLIB="$withval"])
AS_IF([test x"$check_liberty" = "xyes"],
[
AS_IF([test x"$LIBERTYLIB" = x -a x"$liberty_error" = "xno"],
[
sav_LIBS=$LIBS
LIBS="$LIBS $LIBERTYLIBDIR -liberty_pic"
AC_MSG_CHECKING([whether linking with -liberty_pic works])
AC_TRY_LINK([],[],
[AC_MSG_RESULT([yes]); LIBERTYLIB=-liberty_pic],[AC_MSG_RESULT([no])])
LIBS=$sav_LIBS
])
AS_IF([test x"$LIBERTYLIB" = x -a x"$liberty_error" = "xno"],
[
sav_LIBS=$LIBS
LIBS="$LIBS $LIBERTYLIBDIR -liberty"
AC_MSG_CHECKING([whether linking with -liberty works])
AC_TRY_LINK([],[],
[AC_MSG_RESULT([yes]); LIBERTYLIB=-liberty],[AC_MSG_RESULT([no])])
LIBS=$sav_LIBS
])
AS_IF([test x"$LIBERTYLIB" = x -a x"$liberty_error" = "xno"],
[
AC_MSG_NOTICE([error: no libiberty found; check path for LIBERTY package first...])
liberty_error="yes"
])
AS_IF([test x"$LIBERTYLIB" != x -a x"$liberty_error" = "xno"],
[have_liberty="yes"])
AS_IF([test x"$liberty_error" = "xno"],
[
sav_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $LIBERTYINCDIR"
HAVE_DEMANGLE_H=0
AC_CHECK_HEADERS([demangle.h])
AS_IF([test x"$ac_cv_header_demangle_h"], [HAVE_DEMANGLE_H=1])
AC_SUBST(HAVE_DEMANGLE_H)
CPPFLAGS=$sav_CPPFLAGS
])
])
AC_SUBST(LIBERTYINCDIR)
AC_SUBST(LIBERTYLIBDIR)
AC_SUBST(LIBERTYLIB)
])

Просмотреть файл

@ -1,192 +0,0 @@
AC_DEFUN([ACVT_LIBWRAP],
[
libwrap_error="no"
check_libwrap="gen exec io malloc cudart"
force_libwrap="no"
have_libwrap="no"
force_libwrapgen="no"
build_libwrapgen="no"
force_execwrap="no"
force_iowrap="no"
force_mallocwrap="no"
force_cudartwrap="no"
shlibc_pathname=
AC_REQUIRE([ACVT_PLATFORM])
AC_ARG_ENABLE(libtrace,
AC_HELP_STRING([--enable-libtrace=LIST],
[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"])
AS_IF([test x"$enableval" != "xyes" -a x"$enableval" != "xno"],
[
check_libwrap=`echo $enableval | sed 's/,/ /g'`
for lw in $check_libwrap
do
case $lw in
gen)
force_libwrapgen="yes"
;;
libc | exec)
check_execwrap="yes"
force_execwrap="yes"
;;
io)
check_iowrap="yes"
force_iowrap="yes"
;;
malloc)
check_mallocwrap="yes"
force_mallocwrap="yes"
;;
cuda | cudart)
check_cudartwrap="yes"
force_cudartwrap="yes"
;;
*)
AC_MSG_ERROR([value of '--enable-libwrap' not properly set])
;;
esac
done
force_libwrap="yes"
])
])
AC_ARG_WITH(shlibc,
AC_HELP_STRING([--with-shlibc=SHLIBC],
[give the pathname for shared LIBC, default: automatically by configure]),
[
AS_IF([test x"$withval" = "xyes" -o x"$withval" = "xno"],
[AC_MSG_ERROR([value of '--with-shlibc' not properly set])])
shlibc_pathname=$withval
])
AS_IF([test x"$check_libwrap" != "xno"],
[
AS_IF([test x"$enable_shared" = "xno"],
[
case $PLATFORM in
bgp | bgq)
AC_MSG_NOTICE([error: library tracing requires building of shared libraries on this platform; re-configure with \`--enable-shared'])
libwrap_error="yes"
;;
esac
])
AS_IF([test x"$libwrap_error" = "xno"],
[
ACVT_DL
AS_IF([test x"$have_dl" = "xno"], [libwrap_error="yes"])
])
AS_IF([test x"$libwrap_error" = "xno"],
[
AC_MSG_CHECKING([for shared LIBC's pathname])
AS_IF([test x"$shlibc_pathname" = x],
[
rm -f conftest
AC_TRY_LINK([], [],
[
AS_IF([test -r "conftest"],
[
shlibc_pathname=`ldd conftest 2>/dev/null | grep "libc\." | \
sed -e "s/.*=>//" \
-e "s/[ [\(].*[\)]]//" \
-e "s/[[[:space:]]]//g" | \
head -n1`
])
])
])
AS_IF([test x"$shlibc_pathname" != x],
[
AC_MSG_RESULT([$shlibc_pathname])
AC_DEFINE_UNQUOTED([SHLIBC_PATHNAME],
["$shlibc_pathname"], [pathname of shared LIBC])
AC_CHECK_DECLS([__errno_location], [],
[AC_CHECK_DECLS([_Errno], [], [], [#include <errno.h>])], [#include <errno.h>])
],
[
AC_MSG_RESULT([unknown])
])
for lw in $check_libwrap
do
case $lw in
gen)
ACVT_CONF_SUBTITLE([Library wrapper generator])
ACVT_CTOOL
AS_IF([test x"$have_ctool" = "xyes"],
[have_libwrap="yes"; build_libwrapgen="yes"],
[
AS_IF([test x"$force_libwrapgen" = "xyes"],
[
libwrap_error="yes"
break
])
])
;;
libc | exec)
ACVT_CONF_SUBTITLE([LIBC-EXEC])
ACVT_EXECWRAP
AS_IF([test x"$have_execwrap" = "xyes"], [have_execwrap="yes"],
[
AS_IF([test x"$force_execwrap" = "xyes"],
[
force_libwrap="yes"
libwrap_error="yes"
break
])
])
;;
io)
ACVT_CONF_SUBTITLE([LIBC-I/O])
ACVT_IOWRAP
AS_IF([test x"$have_iowrap" = "xyes"], [have_libwrap="yes"],
[
AS_IF([test x"$force_iowrap" = "xyes"],
[
force_libwrap="yes"
libwrap_error="yes"
break
])
])
;;
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"],
[
force_libwrap="yes"
libwrap_error="yes"
break
])
])
;;
esac
done
])
])
])

Просмотреть файл

@ -1,20 +0,0 @@
AC_DEFUN([ACVT_LTMPDIR],
[
local_tmp_dir=
AC_ARG_WITH(local-tmp-dir,
AC_HELP_STRING([--with-local-tmp-dir=DIR],
[give the path for node-local temporary directory, default: /tmp]),
[
AS_IF([test x"$withval" = "xyes" -o x"$withval" = "xno"],
[AC_MSG_ERROR([value of '--with-local-tmp-dir' not properly set])])
local_tmp_dir=$withval
])
AS_IF([test x"$local_tmp_dir" != x],
[
AC_DEFINE_UNQUOTED(DEFAULT_PFORM_LDIR,
["$local_tmp_dir"], [Path for node-local temporary directory])
])
])

Просмотреть файл

@ -1,35 +0,0 @@
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 <dlfcn.h>])
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 -D_XOPEN_SOURCE=600"
AC_CHECK_FUNCS([memalign posix_memalign valloc])
CPPFLAGS=$sav_CPPFLAGS
have_mallocwrap="yes"
])
])
])

Просмотреть файл

@ -1,29 +0,0 @@
AC_DEFUN([ACVT_MATH],
[
math_error="no"
have_math="no"
MATHLIB=
AC_CHECK_HEADER([math.h], [],
[
AC_MSG_NOTICE([error: no math.h found; check path for libmath package first...])
math_error="yes"
])
AS_IF([test x"$math_error" = "xno"],
[
AC_MSG_CHECKING([whether we need to link -lm to get math functions])
AC_TRY_LINK([#include <math.h>],
[
volatile double c, x = 47.11;
c = ceil(x);
],
[AC_MSG_RESULT([no])], [AC_MSG_RESULT([yes]); MATHLIB=-lm])
])
AS_IF([test x"$math_error" = "xno"], [have_math="yes"])
AC_SUBST(MATHLIB)
])

Просмотреть файл

@ -1,62 +0,0 @@
AC_DEFUN([ACVT_METRICS],
[
metrics_error="no"
check_metrics="papi cpc necsx"
force_metrics="no"
have_metrics="no"
AC_REQUIRE([ACVT_PLATFORM])
AC_ARG_ENABLE(metrics,
AC_HELP_STRING([--enable-metrics=TYPE],
[enable support for hardware performance counter (papi,cpc,necsx), default: automatically by configure]),
[
AS_IF([test x"$enableval" = "xno"], [check_metrics="no"])
AS_IF([test x"$enableval" = "xyes"], [force_metrics="yes"])
AS_IF([test x"$enableval" != "xyes" -a x"$enableval" != "xno"],
[
AS_IF([test x"$enableval" != "xpapi" -a x"$enableval" != "xcpc" -a x"$enableval" != "xnecsx"],
[AC_MSG_ERROR([value of '--enable-metrics' not properly set])])
check_metrics="$enableval"
force_metrics="yes"
])
])
AS_IF([test x"$check_metrics" != "xno"],
[
for cm in $check_metrics
do
AS_IF([test x"$cm" = "xpapi"],
[
ACVT_CONF_SUBTITLE([PAPI])
ACVT_PAPI
AS_IF([test x"$have_papi" = "xyes"], [have_metrics="yes"; break])
])
AS_IF([test x"$cm" = "xcpc"],
[
ACVT_CONF_SUBTITLE([CPC])
ACVT_CPC
AS_IF([test x"$have_cpc" = "xyes"], [have_metrics="yes"; break])
])
AS_IF([test x"$cm" = "xnecsx"],
[
ACVT_CONF_SUBTITLE([NEC SX])
AC_MSG_CHECKING([whether we are on a NEC SX])
AS_IF([test x"$PLATFORM" = "xnecsx"],
[
AC_MSG_RESULT([yes])
CCASFLAGS="$CCASFLAGS -m"
have_necsxcntr="yes"
have_metrics="yes"
break
],
[
AC_MSG_RESULT([no])
])
])
done
AS_IF([test x"$have_metrics" = "xno"], [metrics_error="yes"])
])
])

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -1,64 +0,0 @@
AC_DEFUN([ACVT_MPIUNIFYLIB],
[
mpiunifylib_error="no"
check_mpiunifylib="yes"
force_mpiunifylib="no"
build_mpiunifylib="no"
VTMPIUNIFYLIB=
AC_REQUIRE([ACVT_PLATFORM])
AC_REQUIRE([ACVT_ETIMESYNC])
AC_REQUIRE([ACVT_UNIMCI])
AC_ARG_ENABLE(mpiunify-lib,
AC_HELP_STRING([--enable-mpiunify-lib],
[build MPI trace unification library, default: enable if C++ runtime library found]),
[AS_IF([test x"$enableval" = "xyes"], [force_mpiunifylib="yes"], [check_mpiunifylib="no"])])
AS_IF([test x"$check_mpiunifylib" = "xyes"],
[
AS_IF([test "$PLATFORM" = "ibm" -o "$PLATFORM" = "necsx"],
[
AC_MSG_NOTICE([error: The MPI trace unification library cannot be built on this platform])
mpiunifylib_error="yes"
])
AS_IF([test x"$mpiunifylib_error" = "xno" -a x"$inside_openmpi" = "xno"],
[
bad_mpi="no"
AC_CHECK_DECL([PLATFORM_MPI], [bad_mpi="yes"],
[AC_CHECK_DECL([HP_MPI], [bad_mpi="yes"], [], [#include "mpi.h"])],
[], [#include "mpi.h"])
AS_IF([test "$bad_mpi" = "yes"],
[
AC_MSG_NOTICE([error: The MPI trace unification library cannot be built with HP/Platform MPI])
mpiunifylib_error="yes"
])
])
AS_IF([test x"$mpiunifylib_error" = "xno"],
[
AS_IF([test x"$have_unimci" = "xyes" -a x"$unimci_checker_name" = "xMARMOT"],
[
VTMPIUNIFYLIB="-lvt-mpi-unify -lotfaux $CLAPACKLIBDIR $CLAPACKLIB"
build_mpiunifylib="yes"
],
[
ACVT_CXXRTLIB
AS_IF([test x"$cxxrtlib_error" = "xno"],
[
VTMPIUNIFYLIB="-lvt-mpi-unify -lotfaux $CLAPACKLIBDIR $CLAPACKLIB $cxxrtlib"
build_mpiunifylib="yes"
],
[
mpiunifylib_error="yes"
])
])
])
])
AC_SUBST(VTMPIUNIFYLIB)
])

Просмотреть файл

@ -1,31 +0,0 @@
AC_DEFUN([ACVT_OMP],
[
omp_error="no"
build_opari="no"
have_omp="no"
VTPOMPLIB=
AC_ARG_VAR(OPENMP_CFLAGS, [C compiler flags to enable support for OpenMP])
AX_OPENMP([], [omp_error="yes"])
AS_IF([test x"$omp_error" = "xno"],
[
sav_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS $OPENMP_CFLAGS"
AC_CHECK_HEADER([omp.h], [], [omp_error="yes"])
CFLAGS=$sav_CFLAGS
])
AS_IF([test x"$omp_error" = "xno"],
[
VTPOMPLIB="-lvt-pomp"
build_opari="yes"
have_omp="yes"
AC_DEFINE([HAVE_OMP], [1], [Define to 1 if VT is configured with OpenMP support.])
])
AC_SUBST(VTPOMPLIB)
])

Просмотреть файл

@ -1,220 +0,0 @@
AC_DEFUN([ACVT_OTF],
[
otf_error="no"
OTFDIR=
OTFINCDIR=
OTFLIBDIR=
OTFLIB=
AC_REQUIRE([ACVT_MPI])
AC_REQUIRE([ACVT_ZLIB])
AC_REQUIRE([ACVT_IOFSL])
AC_ARG_WITH(extern-otf,
AC_HELP_STRING([--with-extern-otf], [use external OTF library, default: not set]),
[use_extern_otf="yes"], [use_extern_otf="no"])
AC_ARG_WITH(extern-otf-dir,
AC_HELP_STRING([--with-extern-otf-dir=OTFDIR], [give the path for OTF, default: /usr]),
[OTFDIR="$withval/"])
AC_ARG_WITH(extern-otf-inc-dir,
AC_HELP_STRING([--with-extern-otf-inc-dir=OTFINCDIR],
[give the path for OTF-include files, default: OTFDIR/include/open-trace-format]),
[OTFINCDIR="-I$withval"],
[AS_IF([test x"$OTFDIR" != x], [OTFINCDIR="-I$OTFDIR"include/open-trace-format])])
AC_ARG_WITH(extern-otf-lib-dir,
AC_HELP_STRING([--with-extern-otf-lib-dir=OTFLIBDIR],
[give the path for OTF-libraries, default: OTFDIR/lib]),
[OTFLIBDIR="-L$withval"],
[AS_IF([test x"$OTFDIR" != x], [OTFLIBDIR="-L$OTFDIR"lib])])
AC_ARG_WITH(otf-lib,
AC_HELP_STRING([--with-otf-lib=OTFLIB], [use given otf lib, default: -lopen-trace-format ZLIBLIBDIR ZLIBLIB ZOIDFSLIBDIR ZOIDFSLIB BMILIBDIR BMILIB]),
[OTFLIB="$withval"])
AC_ARG_WITH(otf-flags,
AC_HELP_STRING([--with-otf-flags=FLAGS], [pass FLAGS to the OTF distribution configuration script]), [OTFFLAGS="$withval"])
AS_IF([test "$use_extern_otf" = "yes"],
[
sav_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $OTFINCDIR"
AC_CHECK_HEADER([otf.h], [],
[
AC_MSG_NOTICE([error: no otf.h found; check path for OTF package first...])
otf_error="yes"
])
CPPFLAGS=$sav_CPPFLAGS
AS_IF([test x"$OTFLIB" = x -a "$otf_error" = "no"],
[
sav_LIBS=$LIBS
LIBS="$LIBS $OTFLIBDIR -lopen-trace-format $ZLIBLIBDIR $ZLIBLIB $ZOIDFSLIBDIR $ZOIDFSLIB $BMILIBDIR $BMILIB"
AC_MSG_CHECKING([whether linking with -lopen-trace-format $ZLIBLIBDIR $ZLIBLIB $ZOIDFSLIBDIR $ZOIDFSLIB $BMILIBDIR $BMILIB works])
AC_TRY_LINK([],[],
[AC_MSG_RESULT([yes]); OTFLIB="-lopen-trace-format $ZLIBLIBDIR $ZLIBLIB $ZOIDFSLIBDIR $ZOIDFSLIB $BMILIBDIR $BMILIB"],[AC_MSG_RESULT([no])])
LIBS=$sav_LIBS
])
AS_IF([test x"$OTFLIB" = x -a "$otf_error" = "no"],
[
AC_MSG_NOTICE([error: no libopen-trace-format found; check path for OTF package first...])
otf_error="yes"
])
],
[
otf_parent_dir=`pwd`
otf_dir="extlib/otf"
AC_MSG_NOTICE([configuring in $otf_dir ($otf_parent_dir/$otf_dir)])
AS_IF([test "$srcdir" != "."],
[
test -d "$otf_dir" ||
mkdir -p "$otf_dir" ||
AC_MSG_ERROR([cannot create $otf_dir])
])
cd $otf_dir
case $srcdir in
.)
otf_srcdir="$srcdir"
;;
/*)
otf_srcdir="$srcdir/$otf_dir"
;;
*)
otf_srcdir="../../$srcdir/$otf_dir"
;;
esac
otf_conf_cmd="$otf_srcdir/configure"
otf_conf_args=
otf_conf_arg_skip="no"
eval "set x $ac_configure_args"
shift
for otf_conf_arg
do
if test "$otf_conf_arg_skip" = "yes"; then
otf_conf_arg_skip="no"
else
case $otf_conf_arg in
-cache-file | --cache-file | -cache | --cache)
otf_conf_arg_skip="yes"
;;
--config-cache | -C)
;;
-cache-file=* | --cache-file=*)
;;
-srcdir | --srcdir)
otf_conf_arg_skip="yes"
;;
-srcdir=* | --srcdir=*)
;;
-with-otf-flags | --with-otf-flags | -with-otf-flags=* | --with-otf-flags=*)
;;
CPPFLAGS=*)
otf_conf_args="$otf_conf_args 'CPPFLAGS=$CPPFLAGS'"
;;
LDFLAGS=*)
otf_conf_args="$otf_conf_args 'LDFLAGS=$LDFLAGS'"
;;
*)
case $otf_conf_arg in
*\'*) otf_conf_arg=`echo "$otf_conf_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
esac
otf_conf_args="$otf_conf_args '$otf_conf_arg'"
;;
esac
fi
done
AS_IF([test x"$have_mpi" = "xyes"],
[
otf_conf_args="$otf_conf_args MPICC=\"$MPICC\" MPICXX=\"$MPICXX\""
AS_IF([test x"$force_mpi" = "xyes"],
[otf_conf_args="$otf_conf_args --with-mpi"])
AS_IF([test x"$MPIDIR" != x],
[otf_conf_args="$otf_conf_args --with-mpi-dir=\"$MPIDIR\""])
dnl if configuring inside Open MPI, the paths to the MPI header files and libraries are
dnl stored in CPPFLAGS/LDFLAGS; skip adding the --with-mpi-inc-dir/--with-mpi-lib-dir option
AS_IF([test x"$inside_openmpi" = "xno"],
[
AS_IF([test x"$MPIINCDIR" != x],
[otf_conf_args="$otf_conf_args --with-mpi-inc-dir=\"`echo $MPIINCDIR | sed s/-I//`\""])
AS_IF([test x"$MPILIBDIR" != x],
[otf_conf_args="$otf_conf_args --with-mpi-lib-dir=\"`echo $MPILIBDIR | sed s/-L//`\""])
])
AS_IF([test x"$MPILIB" != x],
[otf_conf_args="$otf_conf_args --with-mpi-lib=\"$MPILIB\""])
],
[
otf_conf_args="$otf_conf_args --without-mpi"
])
AS_IF([test x"$have_zlib" = "xyes"],
[
AS_IF([test x"$force_zlib" = "xyes"],
[otf_conf_args="$otf_conf_args --with-zlib"])
AS_IF([test x"$ZLIBDIR" != x],
[otf_conf_args="$otf_conf_args --with-zlib-dir=\"$ZLIBDIR\""])
AS_IF([test x"$ZLIBINCDIR" != x],
[otf_conf_args="$otf_conf_args --with-zlib-inc-dir=\"`echo $ZLIBINCDIR | sed s/-I//`\""])
AS_IF([test x"$ZLIBLIBDIR" != x],
[otf_conf_args="$otf_conf_args --with-zlib-lib-dir=\"`echo $ZLIBLIBDIR | sed s/-L//`\""])
AS_IF([test x"$ZLIBLIB" != x],
[otf_conf_args="$otf_conf_args --with-zlib-lib=\"$ZLIBLIB\""])
],
[
otf_conf_args="$otf_conf_args --without-zlib"
])
AS_IF([test x"$have_iofsl" = "xyes"],
[
AS_IF([test x"$force_iofsl" = "xyes"],
[otf_conf_args="$otf_conf_args --with-zoidfs"])
AS_IF([test x"$ZOIDFSDIR" != x],
[otf_conf_args="$otf_conf_args --with-zoidfs-dir=\"$ZOIDFSDIR\""])
AS_IF([test x"$ZOIDFSINCDIR" != x],
[otf_conf_args="$otf_conf_args --with-zoidfs-inc-dir=\"`echo $ZOIDFSINCDIR | sed s/-I//`\""])
AS_IF([test x"$ZOIDFSLIBDIR" != x],
[otf_conf_args="$otf_conf_args --with-zoidfs-lib-dir=\"`echo $ZOIDFSLIBDIR | sed s/-L//`\""])
AS_IF([test x"$ZOIDFSLIB" != x],
[otf_conf_args="$otf_conf_args --with-zoidfs-lib=\"$ZOIDFSLIB\""])
AS_IF([test x"$BMIDIR" != x],
[otf_conf_args="$otf_conf_args --with-bmi-dir=\"$BMIDIR\""])
AS_IF([test x"$BMIINCDIR" != x],
[otf_conf_args="$otf_conf_args --with-bmi-inc-dir=\"`echo $BMIINCDIR | sed s/-I//`\""])
AS_IF([test x"$BMILIBDIR" != x],
[otf_conf_args="$otf_conf_args --with-bmi-lib-dir=\"`echo $BMILIBDIR | sed s/-L//`\""])
AS_IF([test x"$BMILIB" != x],
[otf_conf_args="$otf_conf_args --with-bmi-lib=\"$BMILIB\""])
],
[
otf_conf_args="$otf_conf_args --without-zoidfs"
])
otf_conf_args="$otf_conf_args --includedir=\"$includedir\" --docdir=\"$docdir/otf\" $OTFFLAGS --cache-file=\"/dev/null\" --srcdir=\"$otf_srcdir\" --disable-option-checking"
AC_MSG_NOTICE([running $SHELL $otf_conf_cmd $otf_conf_args])
eval "$SHELL '$otf_conf_cmd' $otf_conf_args"
AS_IF([test $? != "0"], [AC_MSG_ERROR([$otf_conf_cmd failed for $otf_dir])])
cd $otf_parent_dir
OTFINCDIR=
OTFLIBDIR=
AS_IF([test x"$OTFLIB" = x], [OTFLIB="-lopen-trace-format $ZLIBLIBDIR $ZLIBLIB $ZOIDFSLIBDIR $ZOIDFSLIB $BMILIBDIR $BMILIB"])
])
AC_SUBST(OTFDIR)
AC_SUBST(OTFINCDIR)
AC_SUBST(OTFLIBDIR)
AC_SUBST(OTFLIB)
])

Просмотреть файл

@ -1,109 +0,0 @@
AC_DEFUN([ACVT_PAPI],
[
papi_error="no"
have_papi="no"
PAPIDIR=
PAPIINCDIR=
PAPILIBDIR=
PAPILIB=
AC_ARG_WITH(papi-dir,
AC_HELP_STRING([--with-papi-dir=PAPIDIR],
[give the path for PAPI, default: /usr]),
[PAPIDIR="$withval/"])
AC_ARG_WITH(papi-inc-dir,
AC_HELP_STRING([--with-papi-inc-dir=PAPIINCDIR],
[give the path for PAPI-include files, default: PAPIDIR/include]),
[PAPIINCDIR="-I$withval"],
[AS_IF([test x"$PAPIDIR" != x], [PAPIINCDIR="-I$PAPIDIR"include])])
AC_ARG_WITH(papi-lib-dir,
AC_HELP_STRING([--with-papi-lib-dir=PAPILIBDIR],
[give the path for PAPI-libraries, default: PAPIDIR/lib]),
[PAPILIBDIR="-L$withval"],
[AS_IF([test x"$PAPIDIR" != x], [PAPILIBDIR="-L$PAPIDIR"lib])])
AC_ARG_WITH(papi-lib,
AC_HELP_STRING([--with-papi-lib=PAPILIB], [use given papi lib, default: -lpapi]),
[PAPILIB="$withval"])
sav_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $PAPIINCDIR"
AC_CHECK_HEADER([papi.h], [],
[
AC_MSG_NOTICE([error: no papi.h found; check path for PAPI package first...])
papi_error="yes"
])
CPPFLAGS=$sav_CPPFLAGS
AS_IF([test x"$PAPILIB" = x -a x"$papi_error" = "xno"],
[
sav_LIBS=$LIBS
LIBS="$LIBS $PAPILIBDIR -lpapi"
AC_MSG_CHECKING([whether linking with -lpapi works])
AC_TRY_LINK([],[],
[AC_MSG_RESULT([yes]); PAPILIB=-lpapi],[AC_MSG_RESULT([no])])
LIBS=$sav_LIBS
])
AS_IF([test x"$PAPILIB" = x -a x"$papi_error" = "xno"],
[
AC_MSG_NOTICE([error: no libpapi found; check path for PAPI package first...])
papi_error="yes"
])
AS_IF([test x"$papi_error" = "xno"],
[
AC_MSG_CHECKING([whether PAPI version >= 3])
sav_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $PAPIINCDIR"
AC_TRY_COMPILE([#include <papi.h>],
[
#ifndef PAPI_VERSION
# error "PAPI_VERSION not defined; version < 3"
#elif PAPI_VERSION_MAJOR(PAPI_VERSION) < 3
# error "PAPI_VERSION_MAJOR < 3"
#endif
],
[AC_MSG_RESULT([yes])],
[
AC_MSG_RESULT([no])
AC_MSG_NOTICE([error: PAPI version could not be determined and/or is incompatible (< 3)
See \`config.log' for more details.])
papi_error="yes"
])
CPPFLAGS=$sav_CPPFLAGS
])
AS_IF([test x"$papi_error" = "xno"],
[
sav_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $PAPIINCDIR"
AC_CHECK_TYPES([long_long], [], [], [#include <papi.h>])
CPPFLAGS=$sav_CPPFLAGS
])
AS_IF([test x"$PAPILIB" != x -a x"$papi_error" = "xno"],
[
AC_DEFINE([TIMER_PAPI_REAL_CYC], [10], [PAPI_get_real_cyc])
AC_DEFINE([TIMER_PAPI_REAL_USEC], [11], [PAPI_get_real_usec])
AS_IF([test x"$pform_timer" = "xTIMER_GETTIMEOFDAY"],
[
pform_timer=TIMER_PAPI_REAL_CYC
AC_DEFINE_UNQUOTED([TIMER], [$pform_timer], [Use timer (see below)])
AC_MSG_NOTICE([reselected timer: $pform_timer])
AC_DEFINE([TIMER_IS_GLOBAL], [0],
[Define to 1 if the selected timer is global (doesn't need synchronization)])
AC_MSG_NOTICE([global timer: no])
])
have_papi="yes"
])
AC_SUBST(PAPIINCDIR)
AC_SUBST(PAPILIBDIR)
AC_SUBST(PAPILIB)
])

Просмотреть файл

@ -1,98 +0,0 @@
AC_DEFUN([ACVT_PLATFORM],
[
PLATFORM=
BITMODE=
AC_CANONICAL_HOST
AC_MSG_CHECKING([for platform])
AC_ARG_WITH(platform,
AC_HELP_STRING([--with-platform=PLATFORM],
[configure for given platform (altix,bgl,bgp,bgq,crayt3e,crayx1,crayxt,crayxe,ibm,linux,macos,necsx,origin,sicortex,sun,generic), default: automatically by configure]),
[
AC_MSG_RESULT([skipped (--with-platform=$withval)])
pform_list="altix bgl bgp bgq crayt3e crayx1 crayxt crayxe ibm linux macos necsx origin sicortex sun generic"
pform_found="no"
for p in $pform_list
do
AS_IF([test x"$withval" = x"$p"],
[pform_found="yes"; break])
done
AS_IF([test x"$pform_found" = "xno"],
[AC_MSG_ERROR([value of '--with-platform' not properly set])],
[PLATFORM=$withval])
],
[
case $host_os in
linux*)
AS_IF([test "$host_cpu" = "ia64" -a -f /etc/sgi-release],
[PLATFORM=altix],
[AS_IF([test "$host_cpu" = "powerpc64" -a "$host" != "$build" -a -d /bgl/BlueLight],
[PLATFORM=bgl],
[AS_IF([test "$host_cpu" = "powerpc64" -a "$host" != "$build" -a -d /bgsys/drivers/ppcfloor/hwi],
[PLATFORM=bgq],
[AS_IF([test "$host_cpu" = "powerpc64" -a "$host" != "$build" -a -d /bgsys],
[PLATFORM=bgp],
[AS_IF([test "$host_cpu" = "x86_64" -a "x`uname -r | grep -q cray_gem && echo TRUE`" = "xTRUE"],
[PLATFORM=crayxe],
[AS_IF([test "$host_cpu" = "x86_64" -a -d /opt/xt-boot],
[PLATFORM=crayxt],
[AS_IF([test "$host_cpu" = "mips64" -a -d /opt/sicortex],
[PLATFORM=sicortex],
[PLATFORM=linux])])])])])])])
;;
sunos* | solaris*)
PLATFORM=sun
;;
darwin*)
PLATFORM=macos
;;
irix*)
AS_IF([test "$host_cpu" = "mips"], [PLATFORM="origin"])
;;
aix*)
PLATFORM=ibm
;;
unicosmp*)
PLATFORM=crayx1
;;
superux*)
PLATFORM=necsx
;;
esac
AS_IF([test x"$PLATFORM" = x],
[
AC_MSG_WARN([unknown platform '$host'! using generic configuration])
PLATFORM=generic
],
[
AC_MSG_RESULT([$PLATFORM])
])
])
AC_ARG_WITH(bitmode,
AC_HELP_STRING([--with-bitmode=<32|64>],
[specify bit mode]),
[
AS_IF([test x"$withval" != "x32" -a x"$withval" != "x64"],
[AC_MSG_ERROR([value of '--with-bitmode' not properly set])])
BITMODE=$withval
])
case $PLATFORM in
bgp)
CPPFLAGS="$CPPFLAGS -I/bgsys/drivers/ppcfloor/arch/include"
;;
bgq)
CPPFLAGS="$CPPFLAGS -I/bgsys/drivers/ppcfloor"
;;
esac
AC_SUBST(PLATFORM)
AC_SUBST(BITMODE)
])

Просмотреть файл

@ -1,34 +0,0 @@
AC_DEFUN([ACVT_PLUGINCNTR],
[
plugin_cntr_error="no"
check_plugin_cntr="yes"
force_plugin_cntr="no"
have_plugin_cntr="no"
AC_REQUIRE([ACVT_PLATFORM])
AC_ARG_ENABLE(plugincntr,
AC_HELP_STRING([--enable-plugincntr], [enable plugin counter support, default: enable if found by configure]),
[AS_IF([test x"$enableval" = "xyes"], [force_plugin_cntr="yes"], [check_plugin_cntr="no"])])
AS_IF([test x"$check_plugin_cntr" = "xyes"],
[
AS_IF([test x"$enable_shared" = "xno"],
[
case $PLATFORM in
bgp | bgq)
AC_MSG_NOTICE([error: the plugin counter support requires building of shared libraries on this platform; re-configure with \`--enable-shared'])
plugin_cntr_error="yes"
;;
esac
])
AS_IF([test x"$plugin_cntr_error" = "xno"],
[
ACVT_DL
AS_IF([test x"$have_dl" = "xyes"],
[have_plugin_cntr="yes"], [plugin_cntr_error="yes"])
])
])
])

Просмотреть файл

@ -1,36 +0,0 @@
AC_DEFUN([ACVT_PTHREAD],
[
pthread_error="no"
have_pthread="no"
AC_ARG_VAR(PTHREAD_CFLAGS, [C compiler flags to enable support for POSIX threads])
AC_ARG_VAR(PTHREAD_LIBS, [POSIX threads libraries])
ACX_PTHREAD([], [pthread_error="yes"])
AS_IF([test x"$pthread_error" = "xno"],
[
sav_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
AC_CHECK_HEADER([pthread.h], [], [pthread_error="yes"])
CFLAGS=$sav_CFLAGS
])
AS_IF([test x"$pthread_error" = "xno"],
[
sav_CFLAGS=$CFLAGS
sav_LIBS=$LIBS
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
LIBS="$LIBS $PTHREAD_LIBS"
AC_CHECK_FUNCS([pthread_condattr_getpshared \
pthread_condattr_setpshared \
pthread_mutexattr_getpshared \
pthread_mutexattr_setpshared])
CFLAGS=$sav_CFLAGS
LIBS=$sav_LIBS
have_pthread="yes"
AC_DEFINE([HAVE_PTHREAD], [1], [Define to 1 if VT is configured with Pthreads support.])
])
])

Просмотреть файл

@ -1,36 +0,0 @@
AC_DEFUN([ACVT_RUSAGE],
[
rusage_error="no"
check_rusage="yes"
force_rusage="no"
have_rusage="no"
AC_ARG_ENABLE(rutrace,
AC_HELP_STRING([--enable-rutrace], [enable resource usage tracing support, default: enable if found by configure]),
[AS_IF([test x"$enableval" = "xyes"], [force_rusage="yes"], [check_rusage="no"])])
AS_IF([test x"$check_rusage" = "xyes"],
[
AC_CHECK_HEADER([sys/resource.h], [],
[
AC_MSG_NOTICE([error: no sys/resource.h found])
rusage_error="yes"
])
AS_IF([test x"$rusage_error" = "xno"],
[
AC_CHECK_FUNC([getrusage], [], [rusage_error="yes"])
])
AS_IF([test x"$rusage_error" = "xno"],
[
sav_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
AC_CHECK_DECLS([RUSAGE_THREAD], [], [], [#include <sys/resource.h>])
CPPFLAGS=$sav_CPPFLAGS
have_rusage="yes"
])
])
])

Просмотреть файл

@ -1,92 +0,0 @@
AC_DEFUN([ACVT_TAUINST],
[
tauinst_error="no"
check_tauinst="yes"
force_tauinst="no"
have_tauinst="no"
tauinst_cmd=
tauinst_cparse_cmd=
tauinst_cxxparse_cmd=
tauinst_fparse_cmd=
AC_ARG_ENABLE(tauinst,
AC_HELP_STRING([--enable-tauinst],
[enable support for automatic source code instrumentation by using TAU, default: enable if found by configure]),
[AS_IF([test x"$enableval" = "xyes"], [force_tauinst="yes"], [check_tauinst="no"])])
AC_ARG_WITH(tau-instrumentor,
AC_HELP_STRING([--with-tau-instrumentor=TAUINSTUMENTOR],
[give the command for the TAU instrumentor, default: tau_instrumentor]),
[
AS_IF([test x"$withval" = "xyes" -o x"$withval" = "xno"],
[AC_MSG_ERROR([value of '--with-tau-instrumentor' not properly set!])])
tauinst_cmd=$withval
])
AC_ARG_WITH(pdt-cparse,
AC_HELP_STRING([--with-pdt-cparse=PDTCPARSE],
[give the command for PDT C source code parser, default: cparse]),
[
AS_IF([test x"$withval" = "xyes" -o x"$withval" = "xno"],
[AC_MSG_ERROR([value of '--with-pdt-cparse' not properly set!])])
tauinst_cparse_cmd=$withval
])
AC_ARG_WITH(pdt-cxxparse,
AC_HELP_STRING([--with-pdt-cxxparse=PDTCXXPARSE],
[give the command for PDT C++ source code parser, default: cxxparse]),
[
AS_IF([test x"$withval" = "xyes" -o x"$withval" = "xno"],
[AC_MSG_ERROR([value of '--with-pdt-cxxparse' not properly set!])])
tauinst_cxxparse_cmd=$withval
])
AC_ARG_WITH(pdt-fparse,
AC_HELP_STRING([--with-pdt-fparse=PDTFPARSE],
[give the command for PDT Fortran source code parser, default: f95parse, f90parse, or gfparse]),
[
AS_IF([test x"$withval" = "xyes" -o x"$withval" = "xno"],
[AC_MSG_ERROR([value of '--with-pdt-fparse' not properly set!])])
tauinst_fparse_cmd=$withval
])
AS_IF([test "$check_tauinst" = "yes"],
[
AC_CHECK_PROG(tauinst_cmd, tau_instrumentor, tau_instrumentor)
AS_IF([test x"$tauinst_cmd" = x],
[
AC_MSG_NOTICE([error: no tau_instrumentor found; check path for PDToolkit first...])
tauinst_error="yes"
])
AS_IF([test x"$tauinst_error" = "xno"],
[
AC_CHECK_PROG(tauinst_cparse_cmd, cparse, cparse)
AS_IF([test x"$tauinst_cparse_cmd" = x],
[AC_MSG_WARN([no cparse found; C source code cannot be instrumented by TAU])])
AC_CHECK_PROG(tauinst_cxxparse_cmd, cxxparse, cxxparse)
AS_IF([test x"$tauinst_cxxparse_cmd" = x],
[AC_MSG_WARN([no cxxparse found; C++ source code cannot be instrumented by TAU])])
AS_IF([test x"$FC" != x],
[
AC_CHECK_PROGS(tauinst_fparse_cmd, f95parse f90parse gfparse)
AS_IF([test x"$tauinst_fparse_cmd" = x],
[AC_MSG_WARN([no f95parse, f90parse, or gfparse found; Fortran source code cannot be instrumented by TAU])])
],
[
tauinst_fparse_cmd=
])
AS_IF([test x"$tauinst_cparse_cmd$tauinst_cxxparse_cmd$tauinst_fparse_cmd" = x],
[
AC_MSG_NOTICE([error: no PDT source code parser command found; check path for PDToolkit first...])
tauinst_error="yes"
])
])
AS_IF([test x"$tauinst_error" = "xno"],
[have_tauinst="yes"])
])
])

Просмотреть файл

@ -1,54 +0,0 @@
AC_DEFUN([ACVT_THREADS],
[
threads_error="no"
check_threads="pthread omp"
force_threads="no"
force_threads_list=
have_threads="no"
AC_ARG_ENABLE(threads,
AC_HELP_STRING([--enable-threads=LIST],
[enable support for threads (pthread, omp), default: automatically by configure]),
[
AS_IF([test x"$enableval" = "xno"], [check_threads="no"])
AS_IF([test x"$enableval" = "xyes"], [force_threads="yes"])
AS_IF([test x"$enableval" != "xyes" -a x"$enableval" != "xno"],
[
check_threads="`echo $enableval | sed -e 's/,/ /g'`"
force_threads_list="$check_threads"
force_threads="yes"
])
])
AS_IF([test x"$check_threads" != "xno"],
[
for ct in $check_threads
do
case $ct in
pthread)
ACVT_CONF_SUBSUBTITLE([POSIX threads])
ACVT_PTHREAD
AS_IF([test x"$force_threads_list" != x -a x"$pthread_error" = "xyes"],
[threads_error="yes"; break],
[AS_IF([test x"$have_pthread" = "xyes"], [have_threads="yes"])])
;;
omp)
ACVT_CONF_SUBSUBTITLE([OpenMP])
ACVT_OMP
AS_IF([test x"$force_threads_list" != x -a x"$omp_error" = "xyes"],
[threads_error="yes"; break],
[AS_IF([test x"$have_omp" = "xyes"], [have_threads="yes"])])
;;
*)
AC_MSG_ERROR([unknown thread type '$ct'])
;;
esac
done
AS_IF([test x"$have_threads" = "xno"], [threads_error="yes"])
])
AS_IF([test x"$have_threads" = "xyes"],
[AC_DEFINE([HAVE_THREADS], [1], [Define to 1 if VT is configured with Threads support.])])
])

Просмотреть файл

@ -1,140 +0,0 @@
AC_DEFUN([ACVT_TIMER],
[
timer=
AC_REQUIRE([ACVT_PLATFORM])
case $PLATFORM in
linux)
AC_DEFINE([TIMER_CLOCK_GETTIME], [1], [Use `clock_gettime' function])
AC_DEFINE([TIMER_GETTIMEOFDAY], [2], [Use `gettimeofday' function])
timer=TIMER_GETTIMEOFDAY
case $host_cpu in
i*86 | x86* | powerpc*)
AC_DEFINE([TIMER_CYCLE_COUNTER], [3], [Cycle counter (e.g. TSC)])
timer=TIMER_CYCLE_COUNTER
;;
ia64)
AC_CHECK_HEADERS([asm/intrinsics.h],
[
AC_MSG_CHECKING([for __getReg(_IA64_REG_AR_ITC)])
AC_TRY_LINK([#include <asm/intrinsics.h>],
[
volatile long long r = (long long)__getReg(_IA64_REG_AR_ITC);
],
[
AC_MSG_RESULT([yes])
AC_DEFINE([TIMER_CYCLE_COUNTER], [3], [Cycle counter (e.g. ITC)])
timer=TIMER_CYCLE_COUNTER
], [AC_MSG_RESULT([no])])
])
;;
esac
;;
macos)
AC_DEFINE([TIMER_CYCLE_COUNTER], [1], [Cycle counter (e.g. TSC)])
AC_DEFINE([TIMER_GETTIMEOFDAY], [2], [Use `gettimeofday' function])
timer=TIMER_CYCLE_COUNTER
;;
altix)
AC_DEFINE([TIMER_CLOCK_GETTIME], [1], [Use `clock_gettime' function])
timer=TIMER_CLOCK_GETTIME
mmtimer_h_found=no
AC_CHECK_HEADERS([linux/mmtimer.h], [mmtimer_h_found=yes],
[AC_CHECK_HEADERS([sn/mmtimer.h], [mmtimer_h_found=yes],
[AC_CHECK_HEADERS([mmtimer.h], [mmtimer_h_found=yes])])])
AS_IF([test x"$mmtimer_h_found" = "xyes"],
[
AC_CHECK_FILE([/dev/mmtimer],
[
AC_DEFINE([TIMER_MMTIMER], [2], [Intel Multimedia Timer])
timer=TIMER_MMTIMER
])
])
;;
bgl)
AC_DEFINE([TIMER_RTS_GET_TIMEBASE], [1], [Use `rts_get_timebase' function])
timer=TIMER_RTS_GET_TIMEBASE
;;
bgp | bgq)
AC_DEFINE([TIMER_GET_TIMEBASE], [1], [Use `GetTimeBase' function])
timer=TIMER_GET_TIMEBASE
;;
ibm)
AC_DEFINE([TIMER_POWER_REALTIME], [1], [IBM Power family Real-Time-Clock])
AC_DEFINE([TIMER_SWITCH_CLOCK], [2], [Hardware Switch-Clock (it's necessary to link your application with '-lswclock')])
timer=TIMER_POWER_REALTIME
;;
sun)
AC_DEFINE([TIMER_GETHRTIME], [1], [gethrtime])
timer=TIMER_GETHRTIME
;;
necsx)
AC_DEFINE([TIMER_SYSSX_HGTIME], [1], [NEC SX HGTIME])
timer=TIMER_SYSSX_HGTIME
;;
crayt3e)
AC_DEFINE([TIMER_CRAY_RTCLOCK],[1], [CRAY Real-Time-Clock])
timer=TIMER_CRAY_RTCLOCK
;;
crayx1)
AC_DEFINE([TIMER_GETTIMEOFDAY], [1], [Use `gettimeofday' function])
AC_DEFINE([TIMER_RTC], [2], [RTC (DOES NOT WORK YET WITH FORTRAN CODES)])
timer=TIMER_GETTIMEOFDAY
;;
crayxt | crayxe)
AC_DEFINE([TIMER_CLOCK_GETTIME], [1], [Use `clock_gettime' function])
AC_DEFINE([TIMER_CYCLE_COUNTER], [2], [Cycle counter (e.g. TSC)])
AC_DEFINE([TIMER_GETTIMEOFDAY], [3], [Use `gettimeofday' function])
timer=TIMER_CYCLE_COUNTER
AS_IF([test $PLATFORM = "crayxt"],
[
AC_TRY_COMPILE([],
[
#ifndef __LIBCATAMOUNT__
# error "__LIBCATAMOUNT__ not defined"
#endif
],
[AC_CHECK_HEADERS([catamount/dclock.h],
[AC_CHECK_HEADERS([catamount/data.h],
[
AC_DEFINE([TIMER_DCLOCK], [4], [Use `dclock' function])
timer=TIMER_DCLOCK
])])])
])
;;
origin)
AC_DEFINE([TIMER_CLOCK_GETTIME], [1], [Use `clock_gettime' function])
timer=TIMER_CLOCK_GETTIME
;;
sicortex)
AC_DEFINE([TIMER_GETTIMEOFDAY], [1], [Use `gettimeofday' function])
timer=TIMER_GETTIMEOFDAY
;;
generic)
AC_DEFINE([TIMER_GETTIMEOFDAY], [1], [Use `gettimeofday' function])
timer=TIMER_GETTIMEOFDAY
;;
esac
AC_DEFINE_UNQUOTED([TIMER], [$timer], [Use timer (see below)])
AC_MSG_NOTICE([selected timer: $timer])
case $timer in
TIMER_RTS_GET_TIMEBASE | TIMER_GET_TIMEBASE | TIMER_SYSSX_HGTIME | TIMER_GETTIMEOFDAY)
timer_is_global=yes
timer_is_global_def=1
;;
*)
timer_is_global=no
timer_is_global_def=0
;;
esac
AC_DEFINE_UNQUOTED([TIMER_IS_GLOBAL], [$timer_is_global_def],
[Define to 1 if the selected timer is global (doesn't need synchronization)])
AC_MSG_NOTICE([global timer: $timer_is_global])
])

Просмотреть файл

@ -1,237 +0,0 @@
AC_DEFUN([ACVT_UNIMCI],
[
unimci_error="no"
check_unimci="yes"
force_unimci="no"
have_unimci="no"
unimci_config_cmd=
unimci_checker_name=
unimci_checker_version=
unimci_cc=
unimci_cxx=
unimci_fc=
UNIMCI_CFLAGS=
UNIMCI_CLIBS=
UNIMCI_CXXFLAGS=
UNIMCI_CXXLIBS=
UNIMCI_FCFLAGS=
UNIMCI_FCLIBS=
UNIMCI_LDFLAGS=
AC_ARG_ENABLE(mpicheck,
AC_HELP_STRING([--enable-mpicheck],
[enable support for Universal MPI Correctness Interface (UniMCI), default: enable if unimci-config found by configure]),
[AS_IF([test x"$enableval" = "xyes"], [force_unimci="yes"], [check_unimci="no"])])
AC_ARG_WITH(unimci-config,
AC_HELP_STRING([--with-unimci-config=UNIMCICONFIG],
[give the command for UniMCI config utility, default: unimci-config]),
[
AS_IF([test x"$withval" = "xyes" -o x"$withval" = "xno"],
[AC_MSG_ERROR([value of '--with-unimci-config' not properly set!])])
unimci_config_cmd=$withval
])
AS_IF([test x"$check_unimci" = "xyes"],
[
AS_IF([test x"$inside_openmpi" = "xyes"],
[
AC_MSG_NOTICE([error: MPI Correctness Checking support cannot be built inside Open MPI])
unimci_error="yes"
])
dnl check for unimci-config
AS_IF([test x"$unimci_error" = "xno"],
[
AC_CHECK_PROG(unimci_config_cmd, unimci-config, unimci-config)
AS_IF([test x"$unimci_config_cmd" = x],
[
AC_MSG_NOTICE([error: no unimci-config found; check path for UniMCI package first...])
unimci_error="yes"
])
])
dnl check for version
AS_IF([test x"$unimci_error" = "xno"],
[
AC_MSG_CHECKING([for UniMCI's version])
unimci_version=`eval "$unimci_config_cmd --version"`
AS_IF([test "$?" = "0"],
[
AC_MSG_RESULT([$unimci_version])
unimci_major_version=`echo $unimci_version | cut -d '.' -f 1`
AS_IF([test $unimci_major_version -ne 1],
[
AC_MSG_NOTICE([error: the version of UniMCI isn't supported])
unimci_error="yes"
])
],
[
unimci_error="yes"
])
])
dnl check for UniMCI's checker name
AS_IF([test x"$unimci_error" = "xno"],
[
AC_MSG_CHECKING([for UniMCI's checker name])
unimci_checker_name=`eval "$unimci_config_cmd --checker-name"`
AS_IF([test "$?" = "0"],
[AC_MSG_RESULT([$unimci_checker_name])], [unimci_error="yes"])
])
dnl check for UniMCI's checker version
AS_IF([test x"$unimci_error" = "xno"],
[
AC_MSG_CHECKING([for UniMCI's checker version])
unimci_checker_version=`eval "$unimci_config_cmd --checker-version"`
AS_IF([test "$?" = "0"],
[AC_MSG_RESULT([$unimci_checker_version])], [unimci_error="yes"])
])
dnl check for C support
AS_IF([test x"$unimci_error" = "xno"],
[
AC_MSG_CHECKING([whether UniMCI's checker supports C])
unimci_cc=`eval "$unimci_config_cmd --cc"`
AS_IF([test "$?" = "0"],
[
AS_IF([test x"$unimci_cc" != x],
[
AC_MSG_RESULT([yes])
dnl check for C compiler flags and libs
AC_MSG_CHECKING([for UniMCI's C compiler flags])
UNIMCI_CFLAGS=`eval "$unimci_config_cmd --cflags"`
AS_IF([test "$?" = "0"],
[
AC_MSG_RESULT([$UNIMCI_CFLAGS])
AC_MSG_CHECKING([for UniMCI's C libs])
UNIMCI_CLIBS=`eval "$unimci_config_cmd --clib-dirs --clibs"`
AS_IF([test "$?" = "0"],
[AC_MSG_RESULT([$UNIMCI_CLIBS])], [unimci_error="yes"])
], [unimci_error="yes"])
], [AC_MSG_RESULT([no])])
], [unimci_error="yes"])
])
dnl check for C++ support
AS_IF([test x"$unimci_error" = "xno"],
[
AC_MSG_CHECKING([whether UniMCI's checker supports C++])
unimci_cxx=`eval "$unimci_config_cmd --cxx"`
AS_IF([test "$?" = "0"],
[
AS_IF([test x"$unimci_cxx" != x],
[
AC_MSG_RESULT([yes])
dnl check for C++ compiler flags and libs
AC_MSG_CHECKING([for UniMCI's C++ compiler flags])
UNIMCI_CXXFLAGS=`eval "$unimci_config_cmd --cxxflags"`
AS_IF([test "$?" = "0"],
[
AC_MSG_RESULT([$UNIMCI_CXXFLAGS])
AC_MSG_CHECKING([for UniMCI's C++ libs])
UNIMCI_CXXLIBS=`eval "$unimci_config_cmd --cxxlib-dirs --cxxlibs"`
AS_IF([test "$?" = "0"],
[AC_MSG_RESULT([$UNIMCI_CXXLIBS])], [unimci_error="yes"])
], [unimci_error="yes"])
], [AC_MSG_RESULT([no])])
], [unimci_error="yes"])
])
dnl check for Fortran support
AS_IF([test x"$unimci_error" = "xno" -a x"$FC" != x],
[
AC_MSG_CHECKING([whether UniMCI's checker supports Fortran])
unimci_fc=`eval "$unimci_config_cmd --f90"`
AS_IF([test "$?" = "0"],
[
AS_IF([test x"$unimci_fc" != x],
[
AC_MSG_RESULT([yes])
dnl check for Fortran compiler flags and libs
AC_MSG_CHECKING([for UniMCI's Fortran compiler flags])
UNIMCI_FCFLAGS=`eval "$unimci_config_cmd --f90flags"`
AS_IF([test "$?" = "0"],
[
AC_MSG_RESULT([$UNIMCI_FCFLAGS])
AC_MSG_CHECKING([for UniMCI's Fortran libs])
UNIMCI_FCLIBS=`eval "$unimci_config_cmd --f90lib-dirs --f90libs"`
AS_IF([test "$?" = "0"],
[AC_MSG_RESULT([$UNIMCI_FCLIBS])], [unimci_error="yes"])
], [unimci_error="yes"])
], [AC_MSG_RESULT([no])])
], [unimci_error="yes"])
])
AS_IF([test x"$unimci_cc" = x -a x"$unimci_cxx" = x -a x"$unimci_fc" = x],
[unimci_error="yes"])
dnl check for linker flags
AS_IF([test x"$unimci_error" = "xno"],
[
AC_MSG_CHECKING([for UniMCI's linker flags])
UNIMCI_LDFLAGS=`eval "$unimci_config_cmd --ldflags"`
AS_IF([test "$?" = "0"],
[
AC_MSG_RESULT([$UNIMCI_LDFLAGS])
have_unimci="yes"
],
[
unimci_error="yes"
])
])
dnl check for MPI Fortran interoperability
AS_IF([test x"$unimci_error" = "xno" -a x"$have_fmpi" = "xyes" -a x"$build_fmpiwraplib" = "xno"],
[
ACVT_CONF_SUBSUBTITLE([MPI Fortran interoperability])
ACVT_FMPIWRAPLIB
AS_IF([test x"$fmpiwraplib_error" = "xno"],
[
build_fmpiwraplib="yes"
FMPILIB="-lvt-fmpi"
],
[
AC_MSG_NOTICE([error: MPI Fortran interoperability checks failed])
unimci_error = "yes"
])
])
AS_IF([test x"$unimci_error" = "xno"],
[
AC_DEFINE_UNQUOTED([UNIMCI_CHECKER_NAME],
["$unimci_checker_name"], [UniMCI's checker name])
AC_DEFINE_UNQUOTED([UNIMCI_CHECKER_VERSION],
["$unimci_checker_version"], [UniMCI's checker version])
have_unimci="yes"
])
])
AC_SUBST(UNIMCI_CFLAGS)
AC_SUBST(UNIMCI_CLIBS)
AC_SUBST(UNIMCI_CXXFLAGS)
AC_SUBST(UNIMCI_CXXLIBS)
AC_SUBST(UNIMCI_FCFLAGS)
AC_SUBST(UNIMCI_FCLIBS)
AC_SUBST(UNIMCI_LDFLAGS)
])

Просмотреть файл

@ -1,80 +0,0 @@
AC_DEFUN([ACVT_RUN],
[
vtrun_error="no"
check_vtrun="yes"
force_vtrun="no"
build_vtrun="no"
VT_RUN_MACOS=0
VT_RUN_HAVE_THREADS=0
VT_RUN_HAVE_MPI=0
VT_RUN_HAVE_FMPI=0
VT_RUN_HAVE_DYNINST=0
VT_RUN_NM=
VT_RUN_VTLIB=
VT_RUN_VTMPILIB=
VT_RUN_VTMTLIB=
VT_RUN_VTHYBLIB=
VT_RUN_FMPILIB=
VT_RUN_DYNATTLIB=
AC_REQUIRE([ACVT_PLATFORM])
AC_REQUIRE([ACVT_MPI])
AC_REQUIRE([ACVT_THREADS])
AC_REQUIRE([ACVT_DYNINST])
AC_ARG_ENABLE(vtrun,
AC_HELP_STRING([--enable-vtrun],
[build vtrun - an application execution wrapper script, default: enable if shared libraries are supported]),
[AS_IF([test x"$enableval" = "xyes"], [force_vtrun="yes"], [check_vtrun="no"])])
AS_IF([test x"$check_vtrun" = "xyes"],
[
AS_IF([test "$PLATFORM" = "bgl" -o "$PLATFORM" = "bgp" -o "$PLATFORM" = "bgq"],
[
AC_MSG_NOTICE([error: application execution wrapper not supported on this platform])
vtrun_error="yes"
])
AS_IF([test x"$vtrun_error" = "xno"],
[
AC_MSG_CHECKING([whether we can build shared libraries])
AS_IF([test x"$enable_shared" = "xyes"],
[AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]); vtrun_error="yes"])
])
AS_IF([test x"$vtrun_error" = "xno"],
[
AC_MSG_NOTICE([setup capabilities of vtrun])
AS_IF([test $PLATFORM = "macos"], [VT_RUN_MACOS=1])
AS_IF([test x"$have_threads" = "xyes"], [VT_RUN_HAVE_THREADS=1])
AS_IF([test x"$have_mpi" = "xyes"], [VT_RUN_HAVE_MPI=1])
AS_IF([test x"$have_fmpi" = "xyes"], [VT_RUN_HAVE_FMPI=1])
AS_IF([test x"$have_dyninst" = "xyes" -a x"$build_dynattlib" = "xyes"], [VT_RUN_HAVE_DYNINST=1])
VT_RUN_NM=`echo $NM | sed s/--line-numbers//g`
VT_RUN_VTLIB="libvt$SHREXT"
VT_RUN_VTMPILIB="libvt-mpi$SHREXT"
VT_RUN_VTMTLIB="libvt-mt$SHREXT"
VT_RUN_VTHYBLIB="libvt-hyb$SHREXT"
AS_IF([test x"$build_fmpiwraplib" = "xyes"], [VT_RUN_FMPILIB="libvt-fmpi$SHREXT"])
VT_RUN_DYNATTLIB="libvt-dynatt$SHREXT"
build_vtrun=yes
])
])
AC_SUBST(VT_RUN_MACOS)
AC_SUBST(VT_RUN_HAVE_THREADS)
AC_SUBST(VT_RUN_HAVE_MPI)
AC_SUBST(VT_RUN_HAVE_FMPI)
AC_SUBST(VT_RUN_HAVE_DYNINST)
AC_SUBST(VT_RUN_NM)
AC_SUBST(VT_RUN_VTLIB)
AC_SUBST(VT_RUN_VTMPILIB)
AC_SUBST(VT_RUN_VTMTLIB)
AC_SUBST(VT_RUN_VTHYBLIB)
AC_SUBST(VT_RUN_FMPILIB)
AC_SUBST(VT_RUN_DYNATTLIB)
])

Просмотреть файл

@ -1,87 +0,0 @@
AC_DEFUN([ACVT_SETUP],
[
vtsetup_error="no"
check_vtsetup="yes"
force_vtsetup="no"
build_vtsetup="no"
VT_SETUP_NM=
VT_SETUP_COMPINST_GNU=0
VT_SETUP_COMPRESSION=0
VT_SETUP_CPUIDTRACE=0
VT_SETUP_DYNINST=0
VT_SETUP_ETIMESYNC=0
VT_SETUP_IOTRACE=0
VT_SETUP_JAVA=0
VT_SETUP_EXECTRACE=0
VT_SETUP_MEMTRACE=0
VT_SETUP_METRICS=0
VT_SETUP_MPI=0
VT_SETUP_MPICHECK=0
VT_SETUP_OMP=0
VT_SETUP_PLUGIN_CNTR=0
VT_SETUP_PTHREAD=0
VT_SETUP_RUSAGE=0
VT_SETUP_IOFSL=0
AC_ARG_ENABLE(vtsetup,
AC_HELP_STRING([--enable-vtsetup],
[build vtsetup - a GUI to prepare measurement runs with VampirTrace, default: enable if JAVA found by configure]),
[AS_IF([test x"$enableval" = "xyes"], [force_vtsetup="yes"], [check_vtsetup="no"])])
AS_IF([test x"$check_vtsetup" = "xyes"],
[
AC_CHECK_PROG(JAVA, java, java)
AS_IF([test x"$JAVA" = x],
[
AC_MSG_NOTICE([error: no java found; check path for JAVA package first...])
vtsetup_error="yes"
])
AS_IF([test x"$vtsetup_error" = "xno"],
[
AC_MSG_NOTICE([setup capabilities of vtsetup])
VT_SETUP_NM=`echo $NM | sed s/--line-numbers//g`
AS_IF([test x"$compinst_type" = "xgnu"], [VT_SETUP_COMPINST_GNU=1])
AS_IF([test x"$have_zlib" = "xyes"], [VT_SETUP_COMPRESSION=1])
AS_IF([test x"$have_getcpu" = "xyes"], [VT_SETUP_CPUIDTRACE=1])
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_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])
AS_IF([test x"$have_omp" = "xyes"], [VT_SETUP_OMP=1])
AS_IF([test x"$have_plugin_cntr" = "xyes"], [VT_SETUP_PLUGIN_CNTR=1])
AS_IF([test x"$have_pthread" = "xyes"], [VT_SETUP_PTHREAD=1])
AS_IF([test x"$have_rusage" = "xyes"], [VT_SETUP_RUSAGE=1])
AS_IF([test x"$have_iofsl" = "xyes"], [VT_SETUP_IOFSL=1])
build_vtsetup="yes"
])
])
AC_SUBST(VT_SETUP_NM)
AC_SUBST(VT_SETUP_COMPINST_GNU)
AC_SUBST(VT_SETUP_COMPRESSION)
AC_SUBST(VT_SETUP_CPUIDTRACE)
AC_SUBST(VT_SETUP_DYNINST)
AC_SUBST(VT_SETUP_ETIMESYNC)
AC_SUBST(VT_SETUP_IOTRACE)
AC_SUBST(VT_SETUP_JAVA)
AC_SUBST(VT_SETUP_EXECTRACE)
AC_SUBST(VT_SETUP_MEMTRACE)
AC_SUBST(VT_SETUP_METRICS)
AC_SUBST(VT_SETUP_MPI)
AC_SUBST(VT_SETUP_MPICHECK)
AC_SUBST(VT_SETUP_OMP)
AC_SUBST(VT_SETUP_PLUGIN_CNTR)
AC_SUBST(VT_SETUP_PTHREAD)
AC_SUBST(VT_SETUP_RUSAGE)
AC_SUBST(VT_SETUP_IOFSL)
])

Просмотреть файл

@ -1,79 +0,0 @@
AC_DEFUN([ACVT_ZLIB],
[
zlib_error="no"
check_zlib="yes"
force_zlib="no"
have_zlib="no"
ZLIBDIR=
ZLIBINCDIR=
ZLIBLIBDIR=
ZLIBLIB=
AC_ARG_ENABLE(zlib,
AC_HELP_STRING([--enable-zlib],
[enable ZLIB trace compression support, default: enable if found by configure]),
[AS_IF([test x"$enableval" = "xyes"], [force_zlib="yes"], [check_zlib="no"])])
AC_ARG_WITH(zlib-dir,
AC_HELP_STRING([--with-zlib-dir=ZLIBDIR], [give the path for ZLIB, default: /usr]),
[ZLIBDIR="$withval/"])
AC_ARG_WITH(zlib-inc-dir,
AC_HELP_STRING([--with-zlib-inc-dir=ZLIBINCDIR],
[give the path for ZLIB-include files, default: ZLIBDIR/include]),
[ZLIBINCDIR="-I$withval"],
[AS_IF([test x"$ZLIBDIR" != x], [ZLIBINCDIR="-I$ZLIBDIR"include])])
AC_ARG_WITH(zlib-lib-dir,
AC_HELP_STRING([--with-zlib-lib-dir=ZLIBLIBDIR],
[give the path for ZLIB-libraries, default: ZLIBDIR/lib]),
[ZLIBLIBDIR="-L$withval"],
[AS_IF([test x"$ZLIBDIR" != x], [ZLIBLIBDIR="-L$ZLIBDIR"lib])])
AC_ARG_WITH(zlib-lib,
AC_HELP_STRING([--with-zlib-lib=ZLIBLIB], [use given zlib lib, default: -lz]),
[ZLIBLIB="$withval"])
AS_IF([test x"$check_zlib" = "xyes"],
[
sav_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $ZLIBINCDIR"
AC_CHECK_HEADER([zlib.h], [],
[
AC_MSG_NOTICE([error: no zlib.h found; check path for ZLIB package first...])
zlib_error="yes"
])
CPPFLAGS=$sav_CPPFLAGS
AS_IF([test x"$ZLIBLIB" = x -a x"$zlib_error" = "xno"],
[
sav_LIBS=$LIBS
LIBS="$LIBS $ZLIBLIBDIR -lz"
AC_MSG_CHECKING([whether linking with -lz works])
AC_TRY_LINK([],[],
[AC_MSG_RESULT([yes]); ZLIBLIB=-lz],[AC_MSG_RESULT([no])])
LIBS=$sav_LIBS
])
AS_IF([test x"$ZLIBLIB" = x -a x"$zlib_error" = "xno"],
[
AC_MSG_NOTICE([error: no libz found; check path for ZLIB package first...])
zlib_error="yes"
])
AS_IF([test x"$ZLIBLIB" != x -a x"$zlib_error" = "xno"],
[
have_zlib="yes"
AC_DEFINE([HAVE_ZLIB], [1], [Define to 1 if you have the ZLIB.])
])
AS_IF([test x"$force_zlib" = "xyes" -a x"$zlib_error" = "xyes"],
[exit 1])
])
AC_SUBST(ZLIBINCDIR)
AC_SUBST(ZLIBLIBDIR)
AC_SUBST(ZLIBLIB)
])

Просмотреть файл

@ -1,159 +0,0 @@
# This file lists all calls, which should not be generated
# automatically by mk_c_wrapper.sh
MPI_Address
MPI_Get_address
MPI_Pcontrol
MPI_Wtick
MPI_Wtime
MPI_Comm_call_errhandler
MPI_Comm_create_errhandler
MPI_Comm_get_errhandler
MPI_Comm_set_errhandler
MPI_File_call_errhandler
MPI_File_create_errhandler
MPI_File_get_errhandler
MPI_File_set_errhandler
MPI_Win_call_errhandler
MPI_Win_create_errhandler
MPI_Win_get_errhandler
MPI_Win_set_errhandler
# conflicting argument types with SGI-MPT (noticed on version 1.26)
MPI_Grequest_complete
# conflicting argument types with SGI-MPT (noticed on version 2.06)
MPI_Add_error_string
# conflicting argument types with Platform MPI (noticed on version 7.1)
MPI_Info_delete
MPI_Info_get
MPI_Info_get_valuelen
MPI_Info_set
# implemented MPI functions
MPI_Allgather
MPI_Allgatherv
MPI_Allreduce
MPI_Alltoall
MPI_Alltoallv
MPI_Alltoallw
MPI_Barrier
MPI_Bcast
MPI_Bsend
MPI_Bsend_init
MPI_Cancel
MPI_Cart_create
MPI_Cart_sub
MPI_Comm_create
MPI_Comm_dup
MPI_Comm_free
MPI_Comm_group
MPI_Comm_remote_group
MPI_Comm_split
MPI_Exscan
MPI_Gather
MPI_Gatherv
MPI_Graph_create
MPI_Ibsend
MPI_Init
MPI_Initialized
MPI_Init_thread
MPI_Intercomm_create
MPI_Intercomm_merge
MPI_Irecv
MPI_Irsend
MPI_Isend
MPI_Issend
MPI_Finalize
MPI_Finalized
MPI_Recv
MPI_Recv_init
MPI_Reduce
MPI_Reduce_scatter
MPI_Request_free
MPI_Rsend
MPI_Rsend_init
MPI_Scan
MPI_Scatter
MPI_Scatterv
MPI_Send
MPI_Send_init
MPI_Sendrecv
MPI_Sendrecv_replace
MPI_Ssend
MPI_Ssend_init
MPI_Start
MPI_Startall
MPI_Test
MPI_Testall
MPI_Testany
MPI_Testsome
MPI_Wait
MPI_Waitall
MPI_Waitany
MPI_Waitsome
MPI_Group_difference
MPI_Group_excl
MPI_Group_free
MPI_Group_incl
MPI_Group_intersection
MPI_Group_range_excl
MPI_Group_range_incl
MPI_Group_union
MPI_Accumulate
MPI_Get
MPI_Put
MPI_Win_complete
MPI_Win_create
MPI_Win_fence
MPI_Win_free
MPI_Win_get_group
MPI_Win_lock
MPI_Win_post
MPI_Win_start
MPI_Win_test
MPI_Win_unlock
MPI_Win_wait
MPI_File_close
MPI_File_open
MPI_File_delete
MPI_File_sync
MPI_File_preallocate
MPI_File_read
MPI_File_read_all
MPI_File_seek
MPI_File_write
MPI_File_write_all
MPI_File_read_at
MPI_File_read_at_all
MPI_File_write_at
MPI_File_write_at_all
MPI_File_read_ordered
MPI_File_read_shared
MPI_File_seek_shared
MPI_File_write_ordered
MPI_File_write_shared
MPI_File_iread
MPI_File_iwrite
MPI_File_iread_at
MPI_File_iwrite_at
MPI_File_iread_shared
MPI_File_iwrite_shared
MPI_File_read_all_begin
MPI_File_read_all_end
MPI_File_read_at_all_begin
MPI_File_read_at_all_end
MPI_File_read_ordered_begin
MPI_File_read_ordered_end
MPI_File_write_all_begin
MPI_File_write_all_end
MPI_File_write_at_all_begin
MPI_File_write_at_all_end
MPI_File_write_ordered_begin
MPI_File_write_ordered_end

Просмотреть файл

@ -1,46 +0,0 @@
# This file lists all calls, which should not be generated
# automatically by mk_fortran_wrapper.sh
MPI_Pcontrol
MPI_Wtick
MPI_Wtime
MPI_Comm_call_errhandler
MPI_Comm_create_errhandler
MPI_Comm_get_errhandler
MPI_Comm_set_errhandler
MPI_File_call_errhandler
MPI_File_create_errhandler
MPI_File_get_errhandler
MPI_File_set_errhandler
MPI_Win_call_errhandler
MPI_Win_create_errhandler
MPI_Win_get_errhandler
MPI_Win_set_errhandler
MPI_Comm_create_keyval
MPI_Type_create_keyval
MPI_Win_create_keyval
# TODO: Fortran/C conversion of attribute value parameter
MPI_Attr_get
MPI_Attr_put
MPI_Comm_get_attr
MPI_Comm_set_attr
MPI_Type_get_attr
MPI_Type_set_attr
MPI_Win_get_attr
MPI_Win_set_attr
MPI_Comm_spawn
MPI_Comm_spawn_multiple
# TODO: Fortran/C conversion of type 'MPI_Datarep_conversion_function'
MPI_Register_datarep
# conflicting argument types with SGI-MPT (noticed on version 1.26)
MPI_Grequest_complete
# implemented MPI functions
MPI_Init
MPI_Init_thread

Просмотреть файл

@ -1,243 +0,0 @@
##
# @configure_input@
#
# make vtlib/vt_mpiwrap.gen.c
##
# exit the script if any statement returns a non-true return value
set -e
export SRCDIR=@top_vt_srcdir@/config/mpigen
have_mpi2_thread=@VT_MPIGEN_HAVE_MPI2_THREAD@
have_mpi2_1sided=@VT_MPIGEN_HAVE_MPI2_1SIDED@
have_mpi2_extcoll=@VT_MPIGEN_HAVE_MPI2_EXTCOLL@
have_mpi2_file=@VT_MPIGEN_HAVE_MPI2_IO@
have_mpi2_proc=0 #@VT_MPIGEN_HAVE_MPI2_PROC@
have_mpi2=0
if [ $have_mpi2_thread = 1 -o $have_mpi2_1sided = 1 -o $have_mpi2_extcoll = 1 -o $have_mpi2_proc = 1 ] ; then
have_mpi2=1
fi
mpi2_src1=""; if [ $have_mpi2 = 1 ] ; then mpi2_src1="mpi2_standard.h"; fi
mpi2_src2=""; if [ $have_mpi2_thread = 1 ] ; then mpi2_src2="mpi2_thread.h"; fi
mpi2_src3=""; if [ $have_mpi2_1sided = 1 ] ; then mpi2_src3="mpi2_1sided.h"; fi
mpi2_src4=""; if [ $have_mpi2_extcoll = 1 ] ; then mpi2_src4="mpi2_extcoll.h"; fi
mpi2_src5=""; if [ $have_mpi2_file = 1 ] ; then mpi2_src5="mpi2_file.h"; fi
mpi2_src6=""; if [ $have_mpi2_proc = 1 ] ; then mpi2_src6="mpi2_proc.h"; fi
src="mpi_standard.h $mpi2_src1 $mpi2_src2 $mpi2_src3 $mpi2_src4 $mpi2_src5 $mpi2_src6"
out=@top_vt_builddir@/vtlib/vt_mpiwrap.gen.c
tmp=tmp$$
trap "rm -f $tmp.*; exit" 0 1 2 3 15
rm -f $tmp.tmp $out
for s in $src; do
if [ ! -f $SRCDIR/$s ] ; then
echo "$0: error: $SRCDIR/$s not found!"
exit 1
fi
grep ' MPI_.*(.*)' $SRCDIR/$s \
| sed >>$tmp.tmp \
-e '/typedef /d' \
-e 's/( *void *)/()/' \
-e 's/ */ /g' \
-e 's/ /,/' \
-e 's/(/,/' \
-e 's/);//' \
-e 's/, /,/g' \
-e 's/,$//'
done
cat <<End-of-File >$tmp.c
/**
* VampirTrace
* http://www.tu-dresden.de/zih/vampirtrace
*
* Copyright (c) 2005-2013, ZIH, TU Dresden, Federal Republic of Germany
*
* Copyright (c) 1998-2005, Forschungszentrum Juelich, Juelich Supercomputing
* Centre, Federal Republic of Germany
*
* See the file COPYING in the package base directory for details
*
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
* ! BUILT BY mk_c_wrapper.sh; DO NOT EDIT THIS FILE !
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
**/
End-of-File
cat <<End-of-File >$tmp.awk
{
# C wrapper
#
# \$1 is the return type
# \$2 is the call name
# \$3,\$4,... parameters
call= "grep -i \\"^"\$2"\$\\" \$SRCDIR/c_dont_generate.txt > /dev/null"
generate=system(call)
rettype=\$1
mpicall=\$2
if (!generate) {
printf "/* -- %s -- not generated */\n\n", mpicall
next
}
optional=0
if (index(mpicall,"MPI_Add_error_class") != 0) {
printf "#if defined(HAVE_MPI_ADD_ERROR_CLASS) && HAVE_MPI_ADD_ERROR_CLASS\n\n"
optional=1
}
if (index(mpicall,"MPI_Add_error_code") != 0) {
printf "#if defined(HAVE_MPI_ADD_ERROR_CODE) && HAVE_MPI_ADD_ERROR_CODE\n\n"
optional=1
}
if (index(mpicall,"MPI_Add_error_string") != 0) {
printf "#if defined(HAVE_MPI_ADD_ERROR_STRING) && HAVE_MPI_ADD_ERROR_STRING\n\n"
optional=1
}
if (index(mpicall,"MPI_Type_create_f90_complex") != 0) {
printf "#if defined(HAVE_MPI_TYPE_CREATE_F90_COMPLEX) && HAVE_MPI_TYPE_CREATE_F90_COMPLEX\n\n"
optional=1
}
if (index(mpicall,"MPI_Type_create_f90_integer") != 0) {
printf "#if defined(HAVE_MPI_TYPE_CREATE_F90_INTEGER) && HAVE_MPI_TYPE_CREATE_F90_INTEGER\n\n"
optional=1
}
if (index(mpicall,"MPI_Type_create_f90_real") != 0) {
printf "#if defined(HAVE_MPI_TYPE_CREATE_F90_REAL) && HAVE_MPI_TYPE_CREATE_F90_REAL\n\n"
optional=1
}
if (index(mpicall,"MPI_Type_match_size") != 0) {
printf "#if defined(HAVE_MPI_TYPE_MATCH_SIZE) && HAVE_MPI_TYPE_MATCH_SIZE\n\n"
optional=1
}
if (index(mpicall,"MPI_Win_test") != 0) {
printf "#if defined(HAVE_PMPI_WIN_TEST) && HAVE_PMPI_WIN_TEST\n\n"
optional=1
}
if (index(mpicall,"MPI_Win_lock") != 0) {
printf "#if defined(HAVE_PMPI_WIN_LOCK) && HAVE_PMPI_WIN_LOCK\n\n"
optional=1
}
if (index(mpicall,"MPI_Win_unlock") != 0) {
printf "#if defined(HAVE_PMPI_WIN_UNLOCK) && HAVE_PMPI_WIN_UNLOCK\n\n"
optional=1
}
if (index(mpicall,"MPI_Register_datarep") != 0) {
printf "#if defined(HAVE_MPI_REGISTER_DATAREP) && HAVE_MPI_REGISTER_DATAREP\n\n"
optional=1
}
printf "/* -- %s -- */\n\n", mpicall
printf "%s %s(", rettype, mpicall
if (NF > 2) {
for (i=3; i<=NF; i++) {
n=split(\$i,typeandpara," ")
j=1
if (i > 3) printf ", "
if (n == 3) printf "%s ",typeandpara[j++]
type[i-2]=typeandpara[j++]
para[i-2]=typeandpara[j]
printf "%s %s",type[i-2],para[i-2]
}
}
print ")"
print "{"
printf" %s result;\n", rettype
print " uint32_t tid;"
print ""
print " GET_THREAD_ID(tid);"
print ""
print " if (IS_MPI_TRACE_ON(tid))"
print " {"
print " uint64_t time;"
print " uint8_t was_recorded;"
print ""
print " MPI_TRACE_OFF(tid);"
print ""
print " time = vt_pform_wtime();"
printf" was_recorded = vt_enter(tid, &time, vt_mpi_regid[VT__%s]);\n", toupper(mpicall)
print ""
printf" VT_UNIMCI_CHECK_PRE(%s,\n", mpicall
printf" ("
if (NF > 2) {
for (i=3; i<=NF; i++) {
gsub("[[].*[]]","",para[i-2])
printf para[i-2]
printf", "
}
}
print "\"\", 0, 0),"
print " was_recorded, &time);"
print ""
printf" result = P%s(", mpicall
if (NF > 2) {
for (i=3; i<=NF; i++) {
gsub("[[].*[]]","",para[i-2])
printf para[i-2]
if (i < NF) {
printf", "
}
}
}
print ");"
print ""
printf" VT_UNIMCI_CHECK_POST(%s,\n", mpicall
printf" ("
if (NF > 2) {
for (i=3; i<=NF; i++) {
gsub("[[].*[]]","",para[i-2])
printf para[i-2]
printf ", "
}
}
print "\"\", 0, 0),"
print " was_recorded, &time);"
print ""
print " time = vt_pform_wtime();"
print " vt_exit(tid, &time);"
print ""
print " MPI_TRACE_ON(tid);"
print " }"
print " else"
print " {"
printf" result = P%s(", mpicall
if (NF > 2) {
for (i=3; i<=NF; i++) {
gsub("[[].*[]]","",para[i-2])
printf para[i-2]
if (i < NF) {
printf", "
}
}
}
print ");"
print " }"
print ""
print " return result;"
print "}"
print ""
if (optional) {
printf "#endif\n\n"
}
}
End-of-File
@AWK@ -f $tmp.awk -F, <$tmp.tmp >>$tmp.c
if test $? -ne 0; then exit $?; fi
mv $tmp.c $out
rm $tmp.awk
exit 0

Просмотреть файл

@ -1,921 +0,0 @@
##
# @configure_input@
#
# make vtlib/vt_fmpiwrap.gen.c
##
# exit the script if any statement returns a non-true return value
set -e
export SRCDIR=@top_vt_srcdir@/config/mpigen
export COMM_CONVERT=@VT_MPIGEN_HAVE_FC_CONV_COMM@
export ERRH_CONVERT=@VT_MPIGEN_HAVE_FC_CONV_ERRH@
export FILE_CONVERT=@VT_MPIGEN_HAVE_FC_CONV_FILE@
export GROUP_CONVERT=@VT_MPIGEN_HAVE_FC_CONV_GROUP@
export INFO_CONVERT=@VT_MPIGEN_HAVE_FC_CONV_INFO@
export OP_CONVERT=@VT_MPIGEN_HAVE_FC_CONV_OP@
export REQUEST_CONVERT=@VT_MPIGEN_HAVE_FC_CONV_REQUEST@
export STATUS_CONVERT=@VT_MPIGEN_HAVE_FC_CONV_STATUS@
export TYPE_CONVERT=@VT_MPIGEN_HAVE_FC_CONV_TYPE@
export WIN_CONVERT=@VT_MPIGEN_HAVE_FC_CONV_WIN@
export MPI2CONST_CONVERT=@VT_MPIGEN_HAVE_FC_CONV_MPI2CONST@
have_mpi2_thread=@VT_MPIGEN_HAVE_MPI2_THREAD@
have_mpi2_1sided=@VT_MPIGEN_HAVE_MPI2_1SIDED@
have_mpi2_extcoll=@VT_MPIGEN_HAVE_MPI2_EXTCOLL@
have_mpi2_file=@VT_MPIGEN_HAVE_MPI2_IO@
have_mpi2_proc=0 #@VT_MPIGEN_HAVE_MPI2_PROC@
have_mpi2=0
if [ $have_mpi2_thread = 1 -o $have_mpi2_1sided = 1 -o $have_mpi2_extcoll = 1 -o $have_mpi2_proc = 1 ] ; then
have_mpi2=1
fi
mpi2_src1=""; if [ $have_mpi2 = 1 ] ; then mpi2_src1="mpi2_standard.h"; fi
mpi2_src2=""; if [ $have_mpi2_thread = 1 ] ; then mpi2_src2="mpi2_thread.h"; fi
mpi2_src3=""; if [ $have_mpi2_1sided = 1 ] ; then mpi2_src3="mpi2_1sided.h"; fi
mpi2_src4=""; if [ $have_mpi2_extcoll = 1 ] ; then mpi2_src4="mpi2_extcoll.h"; fi
mpi2_src5=""; if [ $have_mpi2_file = 1 ] ; then mpi2_src5="mpi2_file.h"; fi
mpi2_src6=""; if [ $have_mpi2_proc = 1 ] ; then mpi2_src6="mpi2_proc.h"; fi
src="mpi_standard.h $mpi2_src1 $mpi2_src2 $mpi2_src3 $mpi2_src4 $mpi2_src5 $mpi2_src6"
out=@top_vt_builddir@/vtlib/vt_fmpiwrap.gen.c
tmp=tmp$$
trap "rm -f $tmp.*; exit" 0 1 2 3 15
rm -f $tmp.tmp $out
for s in $src; do
if [ ! -f $SRCDIR/$s ] ; then
echo "$0: error: $SRCDIR/$s not found!"
exit 1
fi
grep ' MPI_.*(.*)' $SRCDIR/$s \
| sed >>$tmp.tmp \
-e '/typedef /d' \
-e 's/( *void *)/()/' \
-e 's/ */ /g' \
-e 's/ /,/' \
-e 's/(/,/' \
-e 's/);//' \
-e 's/, /,/g' \
-e 's/,$//' \
-e 's/CONST//g'
done
cat <<End-of-File >$tmp.c
/**
* VampirTrace
* http://www.tu-dresden.de/zih/vampirtrace
*
* Copyright (c) 2005-2013, ZIH, TU Dresden, Federal Republic of Germany
*
* Copyright (c) 1998-2005, Forschungszentrum Juelich, Juelich Supercomputing
* Centre, Federal Republic of Germany
*
* See the file COPYING in the package base directory for details
*
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
* ! BUILT BY mk_fortran_wrapper.sh; DO NOT EDIT THIS FILE !
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
**/
End-of-File
cat <<End-of-File >$tmp.awk
{
# Fortran wrapper
#
# \$1 is the return type
# \$2 is the call name
# \$3,\$4,... parameters
call= "grep -i \\"^"\$2"\$\\" \$SRCDIR/fortran_dont_generate.txt > /dev/null"
generate=system(call)
mpicall=\$2
if (!generate) {
printf "/* -- %s -- not generated */\n\n", mpicall
next
}
aint_convert=0
if (index(mpicall,"MPI_Address") != 0 ||
index(mpicall,"MPI_Type_extent") != 0 ||
index(mpicall,"MPI_Type_hindexed") != 0 ||
index(mpicall,"MPI_Type_hvector") != 0 ||
index(mpicall,"MPI_Type_lb") != 0 ||
index(mpicall,"MPI_Type_struct") != 0 ||
index(mpicall,"MPI_Type_ub") != 0)
{
aint_convert=1
}
optional=0
if (index(mpicall,"MPI_Add_error_class") != 0) {
printf "#if defined(HAVE_MPI_ADD_ERROR_CLASS) && HAVE_MPI_ADD_ERROR_CLASS\n\n"
optional=1
}
if (index(mpicall,"MPI_Add_error_code") != 0) {
printf "#if defined(HAVE_MPI_ADD_ERROR_CODE) && HAVE_MPI_ADD_ERROR_CODE\n\n"
optional=1
}
if (index(mpicall,"MPI_Add_error_string") != 0) {
printf "#if defined(HAVE_MPI_ADD_ERROR_STRING) && HAVE_MPI_ADD_ERROR_STRING\n\n"
optional=1
}
if (index(mpicall,"MPI_Type_create_f90_complex") != 0) {
printf "#if defined(HAVE_MPI_TYPE_CREATE_F90_COMPLEX) && HAVE_MPI_TYPE_CREATE_F90_COMPLEX\n\n"
optional=1
}
if (index(mpicall,"MPI_Type_create_f90_integer") != 0) {
printf "#if defined(HAVE_MPI_TYPE_CREATE_F90_INTEGER) && HAVE_MPI_TYPE_CREATE_F90_INTEGER\n\n"
optional=1
}
if (index(mpicall,"MPI_Type_create_f90_real") != 0) {
printf "#if defined(HAVE_MPI_TYPE_CREATE_F90_REAL) && HAVE_MPI_TYPE_CREATE_F90_REAL\n\n"
optional=1
}
if (index(mpicall,"MPI_Type_match_size") != 0) {
printf "#if defined(HAVE_MPI_TYPE_MATCH_SIZE) && HAVE_MPI_TYPE_MATCH_SIZE\n\n"
optional=1
}
if (index(mpicall,"MPI_Win_test") != 0) {
printf "#if defined(HAVE_PMPI_WIN_TEST) && HAVE_PMPI_WIN_TEST\n\n"
optional=1
}
if (index(mpicall,"MPI_Win_lock") != 0) {
printf "#if defined(HAVE_PMPI_WIN_LOCK) && HAVE_PMPI_WIN_LOCK\n\n"
optional=1
}
if (index(mpicall,"MPI_Win_unlock") != 0) {
printf "#if defined(HAVE_PMPI_WIN_UNLOCK) && HAVE_PMPI_WIN_UNLOCK\n\n"
optional=1
}
if (index(mpicall,"MPI_Register_datarep") != 0) {
printf "#if defined(HAVE_MPI_REGISTER_DATAREP) && HAVE_MPI_REGISTER_DATAREP\n\n"
optional=1
}
stringcnt=0
printf "/* -- %s -- */\n\n", mpicall
printf "VT_DECLDEF(void vt_%s_f(", tolower(mpicall)
if (NF == 2) {
printf "MPI_Fint* ierr"
} else {
for (i=3; i<=NF; i++) {
# Split up the type and parameter-name -- separated by space and tab
split(\$i,typeandpara," ")
type[i-2]=typeandpara[1]
para[i-2]=typeandpara[2]
if (i > 3) printf ", "
if (type[i-2] == "char*") {
strings[stringcnt++] = para[i-2]
printf "%s %s", type[i-2], para[i-2]
} else if (index(type[i-2], "*") != 0 || index(para[i-2], "[") != 0) {
printf "%s %s", converttype(type[i-2]), para[i-2]
} else {
printf "%s* %s", converttype(type[i-2]), para[i-2]
}
}
printf ", MPI_Fint* ierr"
for (i=0; i<stringcnt; i++) {
printf ", int %s_len", strings[i]
}
}
print "))"
print "{"
# do the handle conversion, if possible
# first, declare necessary variables
decl_i=0
for (i=3; i<=NF; i++) {
print_convert_function(type[i-2],para[i-2],1)
if ((!decl_i) && (index(para[i-2],"_CLASS_ARRAY_") != 0)) decl_i=1
}
if (decl_i == 1) print " int i = 0; (void)i;"
print "";
# print special conversion line for MPI_Waitsome, MPI_Testsome
# For these calls it is necessary to allocate an amount of statuses
# equal to the value speciefied in incount and to convert as many
# statuses as defined by the return value outcount. In order to avoid
# special handling the initial value for outcount is set to the value
# of incount.
if ( (index(mpicall,"MPI_Waitsome") != 0) ||
(index(mpicall,"MPI_Testsome") != 0) )
{
print " *outcount = *incount;"
}
# do the handle conversion
for (i=3; i<=NF; i++)
print_convert_function(type[i-2],para[i-2],0)
print ""
print " VT_UNIMCI_SET_BINDING_LANGUAGE_FORTRAN();"
printf " *ierr = %s(", mpicall
for (i=3; i<=NF; i++) {
if (i > 3) printf ", "
# If the original type already needed a pointer, pass as is,
# otherwise dereference the parameter
printf "%s", get_converted_name(para[i-2],type[i-2])
}
print ");"
print " VT_UNIMCI_SET_BINDING_LANGUAGE_C();"
print ""
# finaly do the handle back conversion if possible/necessary
for (i=3; i<=NF; i++)
print_back_convert_function(type[i-2],para[i-2])
# also dont forget to do convert output array indices
for (i=3; i<=NF; i++)
convert_output_array_indices(type[i-2],para[i-2])
printf "} VT_GENERATE_F77_BINDINGS(%s, %s, vt_%s_f,\n", tolower(mpicall), toupper(mpicall), tolower(mpicall)
printf " ("
if (NF == 2) {
print "MPI_Fint* ierr),"
} else {
for (i=3; i<=NF; i++) {
if (i > 3) printf ", "
if (index(type[i-2], "*") != 0 || index(para[i-2], "[") != 0)
printf "%s %s", converttype(type[i-2]), para[i-2]
else
printf "%s* %s", converttype(type[i-2]), para[i-2]
}
printf ", MPI_Fint* ierr"
for (i=0; i<stringcnt; i++) {
printf ", int %s_len", strings[i]
}
print "),"
}
printf " ("
if (NF == 2) {
printf "ierr))\n\n"
} else {
for (i=3; i<=NF; i++) {
if (i > 3) printf ", "
#remove arrays declarations from parameter:
gsub("[[].*[]]","",para[i-2])
# If the original type already needed a pointer, pass as is,
# otherwise dereference the parameter
printf "%s", para[i-2]
}
printf ", ierr"
for (i=0; i<stringcnt; i++) {
printf ", %s_len", strings[i]
}
printf "))\n\n"
}
if (optional) {
printf "#endif\n\n"
}
}
# =================================================
# Helper Functions for Conversion mangling
# =================================================
# -------------------------------------------------
# Function converts types. It replaces MPI_X Types
# by MPI_Fint.
# -------------------------------------------------
function converttype(type) {
if (aint_convert)
gsub("MPI_Aint","MPI_Fint",type)
if (ENVIRON["COMM_CONVERT"] == 1)
gsub("MPI_Comm","MPI_Fint",type)
if (ENVIRON["ERRH_CONVERT"] == 1)
gsub("MPI_Errhandler","MPI_Fint",type)
if (ENVIRON["FILE_CONVERT"] == 1)
gsub("MPI_File","MPI_Fint",type)
if (ENVIRON["GROUP_CONVERT"] == 1)
gsub("MPI_Group","MPI_Fint",type)
if (ENVIRON["INFO_CONVERT"] == 1)
gsub("MPI_Info","MPI_Fint",type)
if (ENVIRON["OP_CONVERT"] == 1)
gsub("MPI_Op","MPI_Fint",type)
if (ENVIRON["TYPE_CONVERT"] == 1)
gsub("MPI_Datatype","MPI_Fint",type)
if (ENVIRON["WIN_CONVERT"] == 1)
gsub("MPI_Win","MPI_Fint",type)
if (ENVIRON["REQUEST_CONVERT"] == 1)
gsub("MPI_Request","MPI_Fint",type)
gsub("MPI_Status","MPI_Fint",type)
return type
}
# -------------------------------------------------
# Function creating temporary variables and
# converting Fortran variables to C variables
# -------------------------------------------------
function print_convert_function(type,para,decl) {
# a SINGLE value for input purposes
if ( (index(type,"*") == 0) ||
((index(para, "_CLASS_SINGLE_IN") != 0) ||
(index(para, "_CLASS_SINGLE_IO") != 0)) )
{
#all of these classes need temp parameter and conversion
pointer="*"
if (type == "char*") {
if (decl) printf" char* %sC = NULL;\n", para
else printf" vt_string_f2c(%s, %s_len, &%sC);\n", para, para, para
} else if (aint_convert && (index(type,"MPI_Aint")) > 0) {
if (decl) printf" MPI_Aint %sC;\n",para
else printf" %sC = (MPI_Aint)%s%s;\n",para,pointer,para
} else if ((ENVIRON["COMM_CONVERT"] == 1) && (index(type,"MPI_Comm") > 0)) {
if (decl) printf" MPI_Comm %sC;\n", para
else printf" %sC = MPI_Comm_f2c(%s%s);\n",para,pointer,para
} else if ((ENVIRON["ERRH_CONVERT"] == 1) && (index(type,"MPI_Errhandler") > 0)) {
if (decl) printf" MPI_Errhandler %sC;\n", para
else printf" %sC = MPI_Errhandler_f2c(%s%s);\n",para,pointer,para
} else if ((ENVIRON["FILE_CONVERT"] == 1) && (index(type,"MPI_File") > 0)) {
if (decl) printf" MPI_File %sC;\n", para
else printf" %sC = MPI_File_f2c(%s%s);\n",para,pointer,para
} else if ((ENVIRON["GROUP_CONVERT"] == 1) && (index(type,"MPI_Group") > 0)) {
if (decl) printf" MPI_Group %sC;\n", para
else printf" %sC = MPI_Group_f2c(%s%s);\n",para,pointer,para
} else if ((ENVIRON["INFO_CONVERT"] == 1) && (index(type,"MPI_Info") > 0)) {
if (decl) printf" MPI_Info %sC;\n", para
else printf" %sC = MPI_Info_f2c(%s%s);\n",para,pointer,para
} else if ((ENVIRON["OP_CONVERT"] == 1) && (index(type,"MPI_Op") > 0)) {
if (decl) printf" MPI_Op %sC;\n", para
else printf" %sC = MPI_Op_f2c(%s%s);\n",para,pointer,para
} else if ((ENVIRON["TYPE_CONVERT"] == 1) && (index(type,"MPI_Datatype") > 0)) {
if (decl) printf" MPI_Datatype %sC;\n", para
else printf" %sC = MPI_Type_f2c(%s%s);\n",para,pointer,para
} else if ((ENVIRON["WIN_CONVERT"] == 1) && (index(type,"MPI_Win") > 0)) {
if (decl) printf" MPI_Win %sC;\n", para
else printf" %sC = MPI_Win_f2c(%s%s);\n",para,pointer,para
} else if ((ENVIRON["REQUEST_CONVERT"] == 1) && (index(type,"MPI_Request") > 0)) {
if (decl) printf" MPI_Request %sC;\n", para
else printf" %sC = MPI_Request_f2c(%s%s);\n",para,pointer,para
} else if (index(type,"MPI_Status") > 0) {
if (decl) {
printf" MPI_Status* %sC;\n", para
} else {
printf" if ( %s == VT_MPI_F_STATUS_IGNORE )\n",para
printf" %sC = MPI_STATUS_IGNORE;\n",para
printf" else if ( %s == VT_MPI_F_STATUSES_IGNORE )\n",para
printf" %sC = MPI_STATUSES_IGNORE;\n",para
printf" else\n {\n"
if (ENVIRON["STATUS_CONVERT"] == 1) {
printf" %sC = (MPI_Status*)malloc(sizeof(MPI_Status));\n",para
printf" MPI_Status_f2c(%s, %sC);\n",para,para
} else {
printf" %sC = (MPI_Status*)%s;\n",para,para
}
printf" }\n"
}
}
# a SINGLE value for output purposes
} else if ( index(para, "_CLASS_SINGLE_OUT") != 0) {
#Here we just need to create an temp parameter
if (type == "char*") {
if (decl) printf " char %sC[1024];\n", para
} else if (aint_convert && (index(type,"MPI_Aint") > 0)) {
if (decl) printf" MPI_Aint %sC;\n",para
} else if ((ENVIRON["COMM_CONVERT"] == 1) && (index(type,"MPI_Comm") > 0)) {
if (decl) printf" MPI_Comm %sC;\n",para
else printf" %sC = MPI_COMM_NULL;\n",para
} else if ((ENVIRON["ERRH_CONVERT"] == 1) && (index(type,"MPI_Errhandler") > 0)) {
if (decl) printf" MPI_Errhandler %sC;\n",para
else printf" %sC = MPI_ERRHANDLER_NULL;\n",para
} else if ((ENVIRON["FILE_CONVERT"] == 1) && (index(type,"MPI_File") > 0)) {
if (decl) printf" MPI_File %sC;\n",para
else printf" %sC = MPI_FILE_NULL;\n",para
} else if ((ENVIRON["GROUP_CONVERT"] == 1) && (index(type,"MPI_Group") > 0)) {
if (decl) printf" MPI_Group %sC;\n",para
else printf" %sC = MPI_GROUP_NULL;\n",para
} else if ((ENVIRON["INFO_CONVERT"] == 1) && (index(type,"MPI_Info") > 0)) {
if (decl) printf" MPI_Info %sC;\n",para
else printf" %sC = MPI_INFO_NULL;\n",para
} else if ((ENVIRON["OP_CONVERT"] == 1) && (index(type,"MPI_Op") > 0)) {
if (decl) printf" MPI_Op %sC;\n",para
else printf" %sC = MPI_OP_NULL;\n",para
} else if ((ENVIRON["TYPE_CONVERT"] == 1) && (index(type,"MPI_Datatype") > 0)) {
if (decl) printf" MPI_Datatype %sC;\n",para
else printf" %sC = MPI_DATATYPE_NULL;\n",para
} else if ((ENVIRON["WIN_CONVERT"] == 1) && (index(type,"MPI_Win") > 0)) {
if (decl) printf" MPI_Win %sC;\n",para
else printf" %sC = MPI_WIN_NULL;\n",para
} else if ((ENVIRON["REQUEST_CONVERT"] == 1) && (index(type,"MPI_Request") > 0)) {
if (decl) printf" MPI_Request %sC;\n",para
else printf" %sC = MPI_REQUEST_NULL;\n",para
} else if (index(type,"MPI_Status") > 0) {
if (decl) {
printf" MPI_Status* %sC;\n",para
} else {
printf" if ( %s == VT_MPI_F_STATUS_IGNORE )\n",para
printf" %sC = MPI_STATUS_IGNORE;\n",para
printf" else if ( %s == VT_MPI_F_STATUSES_IGNORE )\n",para
printf" %sC = MPI_STATUSES_IGNORE;\n",para
printf" else\n"
if (ENVIRON["STATUS_CONVERT"] == 1) {
printf" %sC = (MPI_Status*)malloc(sizeof(MPI_Status));\n",para
} else {
printf" %sC = (MPI_Status*)%s;\n",para,para
}
}
}
# an ARRAY for input and/or output purposes
} else if ( (index(para, "_CLASS_ARRAY_") != 0) ) {
#We need for all array cases a temporary array
#extract the name of the length parameter
splitstring="_CLASS_ARRAY_IN_"
if (index(para, "_CLASS_ARRAY_IO_") != 0)
splitstring="_CLASS_ARRAY_IO_"
if (index(para, "_CLASS_ARRAY_OUT_") != 0)
splitstring="_CLASS_ARRAY_OUT_"
split(para,lentemp,splitstring)
len_parameter = lentemp[2]
#now we have to handle all the imaginable handles
if (aint_convert && (index(type,"MPI_Aint") > 0)) {
if (decl) {
printf" MPI_Aint* %sC;\n",para
} else {
printf" %sC = (MPI_Aint*)malloc(sizeof(MPI_Aint)*(*%s));\n",para,len_parameter
}
} else if ((ENVIRON["COMM_CONVERT"] == 1) && (index(type,"MPI_Comm") > 0)) {
if (decl) {
printf" MPI_Comm* %sC;\n",para
} else {
printf" %sC = (MPI_Comm*)malloc(sizeof(MPI_Comm)*(*%s));\n",para,len_parameter
printf" for (i = 0; i < *%s; i++) \n",len_parameter
printf" %sC[i] = MPI_COMM_NULL;\n",para
}
} else if ((ENVIRON["ERRH_CONVERT"] == 1) && (index(type,"MPI_Errhandler") > 0)) {
if (decl) {
printf" MPI_Errhandler* %sC;\n",para
} else {
printf" %sC = (MPI_Errhandler*)malloc(sizeof(MPI_Errhandler)*(*%s));\n",para,len_parameter
printf" for (i = 0; i < *%s; i++) \n",len_parameter
printf" %sC[i] = MPI_ERRHANDLER_NULL;\n",para
}
} else if ((ENVIRON["FILE_CONVERT"] == 1) && (index(type,"MPI_File") > 0)) {
if (decl) {
printf" MPI_File* %sC;\n",para
} else {
printf" %sC = (MPI_File*)malloc(sizeof(MPI_File)*(*%s));\n",para,len_parameter
printf" for (i = 0; i < *%s; i++) \n",len_parameter
printf" %sC[i] = MPI_FILE_NULL;\n",para
}
} else if ((ENVIRON["GROUP_CONVERT"] == 1) && (index(type,"MPI_Group") > 0)) {
if (decl) {
printf" MPI_Group* %sC;\n",para
} else {
printf" %sC = (MPI_Group*)malloc(sizeof(MPI_Group)*(*%s));\n",para,len_parameter
printf" for (i = 0; i < *%s; i++) \n",len_parameter
printf" %sC[i] = MPI_GROUP_NULL;\n",para
}
} else if ((ENVIRON["INFO_CONVERT"] == 1) && (index(type,"MPI_Info") > 0)) {
if (decl) {
printf" MPI_Info* %sC;\n",para
} else {
printf" %sC = (MPI_Info*)malloc(sizeof(MPI_Info)*(*%s));\n",para,len_parameter
printf" for (i = 0; i < *%s; i++) \n",len_parameter
printf" %sC[i] = MPI_INFO_NULL;\n",para
}
} else if ((ENVIRON["OP_CONVERT"] == 1) && (index(type,"MPI_Op") > 0)) {
if (decl) {
printf" MPI_Op* %sC;\n",para
} else {
printf" %sC = (MPI_Op*)malloc(sizeof(MPI_Op)*(*%s));\n",para,len_parameter
printf" for (i = 0; i < *%s; i++) \n",len_parameter
printf" %sC[i] = MPI_OP_NULL;\n",para
}
} else if ((ENVIRON["TYPE_CONVERT"] == 1) && (index(type,"MPI_Datatype") > 0)) {
if (decl) {
printf" MPI_Datatype* %sC;\n",para
} else {
printf" %sC = (MPI_Datatype*)malloc(sizeof(MPI_Datatype)*(*%s));\n",para,len_parameter
printf" for (i = 0; i < *%s; i++) \n",len_parameter
printf" %sC[i] = MPI_DATATYPE_NULL;\n",para
}
} else if ((ENVIRON["WIN_CONVERT"] == 1) && (index(type,"MPI_Win") > 0)) {
if (decl) {
printf" MPI_Win* %sC;\n",para
} else {
printf" %sC = (MPI_Win*)malloc(sizeof(MPI_Win)*(*%s));\n",para,len_parameter
printf" for (i = 0; i < *%s; i++) \n",len_parameter
printf" %sC[i] = MPI_WIN_NULL;\n",para
}
} else if ((ENVIRON["REQUEST_CONVERT"] == 1) && (index(type,"MPI_Request") > 0)) {
if (decl) {
printf" MPI_Request* %sC;\n",para
} else {
printf" %sC = (MPI_Request*)malloc(sizeof(MPI_Request)*(*%s));\n",para,len_parameter
printf" for (i = 0; i < *%s; i++) \n",len_parameter
printf" %sC[i] = MPI_REQUEST_NULL;\n",para
}
} else if (index(type,"MPI_Status") > 0) {
if (decl) {
printf" MPI_Status* %sC;\n",para
} else {
printf" if ( %s == VT_MPI_F_STATUSES_IGNORE )\n",para
printf" %sC = MPI_STATUSES_IGNORE;\n",para
printf" else if ( %s == VT_MPI_F_STATUS_IGNORE )\n",para
printf" %sC = MPI_STATUS_IGNORE;\n",para
printf" else\n"
if (ENVIRON["STATUS_CONVERT"] == 1) {
printf" %sC = (MPI_Status*)malloc(sizeof(MPI_Status)*(*%s));\n",para,len_parameter
} else {
printf" %sC = (MPI_Status*)%s;\n",para,para
}
}
}
}
# an ARRAY for input purposes
if ( (index(para, "_CLASS_ARRAY_IN_") != 0) ||
(index(para, "_CLASS_ARRAY_IO_") != 0) )
{
#both of these classes need temp array parameter and conversion
#extract the name of the length parameter
splitstring="_CLASS_ARRAY_IN_"
if (index(para, "_CLASS_ARRAY_IO_") != 0)
splitstring="_CLASS_ARRAY_IO_"
split(para,lentemp,splitstring)
len_parameter = lentemp[2]
#now we have to handle all the imaginable handles
if (aint_convert && (index(type,"MPI_Aint") > 0)) {
if (!decl) {
printf" for (i = 0; i < *%s; i++) \n",len_parameter
printf" %sC[i] = (MPI_Aint)%s[i];\n",para,para
}
} else if ((ENVIRON["COMM_CONVERT"] == 1) && (index(type,"MPI_Comm") > 0)) {
if (!decl) {
printf" for (i = 0; i < *%s; i++) \n",len_parameter
printf" %sC[i] = MPI_Comm_f2c(%s[i]);\n",para,para
}
} else if ((ENVIRON["ERRH_CONVERT"] == 1) && (index(type,"MPI_Errhandler") > 0)) {
if (!decl) {
printf" for (i = 0; i < *%s; i++) \n",len_parameter
printf" %sC[i] = MPI_Errhandler_f2c(%s[i]);\n",para,para
}
} else if ((ENVIRON["FILE_CONVERT"] == 1) && (index(type,"MPI_File") > 0)) {
if (!decl) {
printf" for (i = 0; i < *%s; i++) \n",len_parameter
printf" %sC[i] = MPI_File_f2c(%s[i]);\n",para,para
}
} else if ((ENVIRON["GROUP_CONVERT"] == 1) && (index(type,"MPI_Group") > 0)) {
if (!decl) {
printf" for (i = 0; i < *%s; i++) \n",len_parameter
printf" %sC[i]=MPI_Group_f2c(%s[i]);\n",para,para
}
} else if ((ENVIRON["INFO_CONVERT"] == 1) && (index(type,"MPI_Info") > 0)) {
if (!decl) {
printf" for (i = 0; i < *%s; i++) \n",len_parameter
printf" %sC[i] = MPI_Info_f2c(%s[i]);\n",para,para
}
} else if ((ENVIRON["OP_CONVERT"] == 1) && (index(type,"MPI_Op") > 0)) {
if (!decl) {
printf" for (i = 0; i < *%s; i++) \n",len_parameter
printf" %sC[i] = MPI_Op_f2c(%s[i]);\n",para,para
}
} else if ((ENVIRON["TYPE_CONVERT"] == 1) && (index(type,"MPI_Datatype") > 0)) {
if (!decl) {
printf" for (i = 0; i < *%s; i++) \n",len_parameter
printf" %sC[i] = MPI_Type_f2c(%s[i]);\n",para,para
}
} else if ((ENVIRON["WIN_CONVERT"] == 1) && (index(type,"MPI_Win") > 0)) {
if (!decl) {
printf" for (i = 0; i < *%s; i++) \n",len_parameter
printf" %sC[i] = MPI_Win_f2c(%s[i]);\n",para,para
}
} else if ((ENVIRON["REQUEST_CONVERT"] == 1) && (index(type,"MPI_Request") > 0)) {
if (!decl) {
printf" for (i = 0; i < *%s; i++) \n",len_parameter
printf" %sC[i] = MPI_Request_f2c(%s[i]);\n",para,para
}
} else if ((ENVIRON["STATUS_CONVERT"] == 1) && (index(type,"MPI_Status") > 0)) {
if (!decl) {
printf" if ( (%s != VT_MPI_F_STATUSES_IGNORE) && (%s != VT_MPI_F_STATUS_IGNORE) )\n {\n",para,para
printf" for (i = 0; i < *%s; i++) \n",len_parameter
printf" MPI_Status_f2c(&%s[i], &%sC[i*VT_MPI_STATUS_SIZE]);\n",para,para
printf" }\n"
}
}
# a BUFFER for purposes
} else if ( (index(para, "_CLASS_BUFFER") != 0) ) {
if (!decl) {
if ((ENVIRON["MPI2CONST_CONVERT"] == 1) && (index(para, "_IN_PLACE") > 0)) {
printf" %s = VT_MPI_IN_PLACE_F2C(%s);\n",para,para
}
printf" %s = VT_MPI_BOTTOM_F2C(%s);\n",para,para
}
}
}
# -------------------------------------------------
# Function deleting dynamic temporary variables and
# back converting C variables to Fortran variables
# -------------------------------------------------
function print_back_convert_function(type,para) {
# SINGLE ARGUMENT BACK CONVERSION
if ( ((index(para, "_CLASS_SINGLE_OUT") != 0) ||
(index(para, "_CLASS_SINGLE_IO") != 0 )) )
{
#this class needs back conversion of a single argument
if (type == "char*")
printf" vt_string_c2f(%sC, %s, %s_len);\n", para, para, para
if (aint_convert && (index(type,"MPI_Aint") > 0))
printf" *%s = (MPI_Fint)%sC;\n",para,para
if ((ENVIRON["COMM_CONVERT"] == 1) && (index(type,"MPI_Comm") > 0))
printf" *%s = MPI_Comm_c2f(%sC);\n",para,para
if ((ENVIRON["ERRH_CONVERT"] == 1) && (index(type,"MPI_Errhandler") > 0))
printf" *%s = MPI_Errhandler_c2f(%sC);\n",para,para
if ((ENVIRON["FILE_CONVERT"] == 1) && (index(type,"MPI_File") > 0))
printf" *%s = MPI_File_c2f(%sC);\n",para,para
if ((ENVIRON["GROUP_CONVERT"] == 1) && (index(type,"MPI_Group") > 0))
printf" *%s = MPI_Group_c2f(%sC);\n",para,para
if ((ENVIRON["INFO_CONVERT"] == 1) && (index(type,"MPI_Info") > 0))
printf" *%s = MPI_Info_c2f(%sC);\n",para,para
if ((ENVIRON["OP_CONVERT"] == 1) && (index(type,"MPI_Op") > 0))
printf" *%s = MPI_Op_c2f(%sC);\n",para,para
if ((ENVIRON["TYPE_CONVERT"] == 1) && (index(type,"MPI_Datatype") > 0))
printf" *%s = MPI_Type_c2f(%sC);\n",para,para
if ((ENVIRON["WIN_CONVERT"] == 1) && (index(type,"MPI_Win") > 0))
printf" *%s = MPI_Win_c2f(%sC);\n",para,para
if ((ENVIRON["REQUEST_CONVERT"] == 1) && (index(type,"MPI_Request") > 0))
printf" *%s = MPI_Request_c2f(%sC);\n",para,para
if ((ENVIRON["STATUS_CONVERT"] == 1) && (index(type,"MPI_Status") > 0)) {
printf" if ( (%s != VT_MPI_F_STATUS_IGNORE) && (%s != VT_MPI_F_STATUSES_IGNORE) )\n",para,para
printf" MPI_Status_c2f(%sC, %s);\n",para,para
}
}
#ARRAY BACK CONVERSION
if ( ((index(para, "_CLASS_ARRAY_OUT_") != 0) ||
(index(para, "_CLASS_ARRAY_IO_") != 0)) )
{
#both of these classes need array back conversion
#extract the name of the length parameter
splitstring="_CLASS_ARRAY_OUT_"
if (index(para, "_CLASS_ARRAY_IO_") != 0)
splitstring="_CLASS_ARRAY_IO_"
split(para,lentemp,splitstring)
len_parameter = lentemp[2]
#now we have to handle all the imaginable handles
if (aint_convert && (index(type,"MPI_Aint") > 0)) {
printf" if ( *%s != MPI_UNDEFINED )\n {\n",len_parameter
printf" for (i = 0; i < *%s; i++) \n",len_parameter
printf" %s[i] = (MPI_Fint)%sC[i];\n",para,para
printf" }\n"
}
if ((ENVIRON["COMM_CONVERT"] == 1) && (index(type,"MPI_Comm") > 0)) {
printf" if ( *%s != MPI_UNDEFINED )\n {\n",len_parameter
printf" for (i = 0; i < *%s; i++) \n",len_parameter
printf" %s[i] = MPI_Comm_c2f(%sC[i]);\n",para,para
printf" }\n"
}
if ((ENVIRON["ERRH_CONVERT"] == 1) && (index(type,"MPI_Errhandler") > 0)) {
printf" if ( *%s != MPI_UNDEFINED )\n {\n",len_parameter
printf" for (i = 0; i < *%s; i++) \n",len_parameter
printf" %s[i] = MPI_Errhandler_c2f(%sC[i]);\n",para,para
printf" }\n"
}
if ((ENVIRON["FILE_CONVERT"] == 1) && (index(type,"MPI_File") > 0)) {
printf" if ( *%s != MPI_UNDEFINED )\n {\n",len_parameter
printf" for (i = 0; i < *%s; i++) \n",len_parameter
printf" %s[i] = MPI_File_c2f(%sC[i]);\n",para,para
printf" }\n"
}
if ((ENVIRON["GROUP_CONVERT"] == 1) && (index(type,"MPI_Group") > 0)) {
printf" if ( *%s != MPI_UNDEFINED )\n {\n",len_parameter
printf" for (i = 0; i < *%s; i++) \n",len_parameter
printf" %s[i] = MPI_Group_c2f(%sC[i]);\n",para,para
printf" }\n"
}
if ((ENVIRON["INFO_CONVERT"] == 1) && (index(type,"MPI_Info") > 0)) {
printf" if ( *%s != MPI_UNDEFINED )\n {\n",len_parameter
printf" for (i = 0; i < *%s; i++) \n",len_parameter
printf" %s[i] = MPI_Info_c2f(%sC[i]);\n",para,para
printf" }\n"
}
if ((ENVIRON["OP_CONVERT"] == 1) && (index(type,"MPI_Op") > 0)) {
printf" if ( *%s != MPI_UNDEFINED )\n {\n",len_parameter
printf" for (i = 0; i < *%s; i++) \n",len_parameter
printf" %s[i] = MPI_Op_c2f(%sC[i]);\n",para,para
printf" }\n"
}
if ((ENVIRON["TYPE_CONVERT"] == 1) && (index(type,"MPI_Datatype") > 0)) {
printf" if ( *%s != MPI_UNDEFINED )\n {\n",len_parameter
printf" for (i = 0; i < *%s; i++) \n",len_parameter
printf" %s[i] = MPI_Type_c2f(%sC[i]);\n",para,para
printf" }\n"
}
if ((ENVIRON["WIN_CONVERT"] == 1) && (index(type,"MPI_Win") > 0)) {
printf" if ( *%s != MPI_UNDEFINED )\n {\n",len_parameter
printf" for (i = 0; i < *%s; i++) \n",len_parameter
printf" %s[i] = MPI_Win_c2f(%sC[i]);\n",para,para
printf" }\n"
}
if ((ENVIRON["REQUEST_CONVERT"] == 1) && (index(type,"MPI_Request") > 0)) {
printf" if ( *%s != MPI_UNDEFINED )\n {\n",len_parameter
printf" for (i = 0; i < *%s; i++) \n",len_parameter
printf" %s[i] = MPI_Request_c2f(%sC[i]);\n",para,para
printf" }\n"
}
if ((ENVIRON["STATUS_CONVERT"] == 1) && (index(type,"MPI_Status") > 0)) {
printf" if ( (*%s != MPI_UNDEFINED) && (%s != VT_MPI_F_STATUSES_IGNORE) && (%s != VT_MPI_F_STATUS_IGNORE) )\n {\n",len_parameter,para,para
printf" for (i = 0; i < *%s; i++) \n",len_parameter
printf" MPI_Status_c2f(&%sC[i], &%s[i*VT_MPI_STATUS_SIZE]);\n",para,para
printf" }\n"
}
}
#free the array memory for all but MPI_Status
if ( (index(para,"_CLASS_ARRAY_") != 0) &&
(index(type,"MPI_Status") == 0) )
{
if ((aint_convert && (index(type,"MPI_Aint") > 0)) ||
((ENVIRON["COMM_CONVERT"] == 1) && (index(type,"MPI_Comm") > 0)) ||
((ENVIRON["ERRH_CONVERT"] == 1) && (index(type,"MPI_Errhandler") > 0)) ||
((ENVIRON["FILE_CONVERT"] == 1) && (index(type,"MPI_File") > 0)) ||
((ENVIRON["GROUP_CONVERT"] == 1) && (index(type,"MPI_Group") > 0)) ||
((ENVIRON["INFO_CONVERT"] == 1) && (index(type,"MPI_Info") > 0)) ||
((ENVIRON["OP_CONVERT"] == 1) && (index(type,"MPI_Op") > 0)) ||
((ENVIRON["TYPE_CONVERT"] == 1) && (index(type,"MPI_Datatype") > 0)) ||
((ENVIRON["WIN_CONVERT"] == 1) && (index(type,"MPI_Win") > 0)) )
{
printf " free(%sC);\n",para
}
}
#free the array memory for statuses
if ( (index(para,"_CLASS_ARRAY_") != 0) &&
(index(type,"MPI_Status") != 0) &&
(ENVIRON["STATUS_CONVERT"] == 1) )
{
printf " if ( (%s != VT_MPI_F_STATUS_IGNORE) && (%s != VT_MPI_F_STATUSES_IGNORE) )\n",para,para
printf " free(%sC);\n",para
}
#free Status memory (for single status values)
if ( (index(para,"_CLASS_SINGLE_") != 0) &&
(index(type,"MPI_Status") != 0) &&
(ENVIRON["STATUS_CONVERT"] == 1) )
{
printf " if ( (%s != VT_MPI_F_STATUS_IGNORE) && (%s != VT_MPI_F_STATUSES_IGNORE) )\n",para,para
printf " free(%sC);\n",para
}
#free string memory
if ( (index(para,"_CLASS_SINGLE_IN") != 0) &&
(type == "char*") )
{
printf " free(%sC);\n",para
}
} #function back_convert
# -------------------------------------------------
# Function printing an variable name depending upon
# its type and temporary representation.
# -------------------------------------------------
function get_converted_name(para,type) {
#string
if (type == "char*") return para "C"
pointer=""
if (index(type, "*") == 0 && index(para, "[") == 0)
pointer="*"
#remove arrays declarations from parameter:
gsub("[[].*[]]","",para)
#find out wheter we have to pass address operator "&"
address=""
if ((index(para,"_CLASS_SINGLE_") != 0) && (index(type,"MPI_Status") == 0) )
address="&"
#handle conversion
if ((aint_convert && (index(type,"MPI_Aint") > 0)) ||
((ENVIRON["COMM_CONVERT"] == 1) && (index(type,"MPI_Comm") > 0)) ||
((ENVIRON["ERRH_CONVERT"] == 1) && (index(type,"MPI_Errhandler") > 0)) ||
((ENVIRON["FILE_CONVERT"] == 1) && (index(type,"MPI_File") > 0)) ||
((ENVIRON["GROUP_CONVERT"] == 1) && (index(type,"MPI_Group") > 0)) ||
((ENVIRON["INFO_CONVERT"] == 1) && (index(type,"MPI_Info") > 0)) ||
((ENVIRON["OP_CONVERT"] == 1) && (index(type,"MPI_Op") > 0)) ||
((ENVIRON["TYPE_CONVERT"] == 1) && (index(type,"MPI_Datatype") > 0)) ||
((ENVIRON["WIN_CONVERT"] == 1) && (index(type,"MPI_Win") > 0)) ||
((ENVIRON["REQUEST_CONVERT"] == 1) && (index(type,"MPI_Request") > 0)) ||
(index(type,"MPI_Status") > 0) )
{
return address para "C"
}
#it is not a handle type so normal handling
return pointer para
}
# -------------------------------------------------
# Function that converts array indizes passed between
# C and Fortran, only used for array inidces generated
# in C and passed back to Fortran.
# -------------------------------------------------
function convert_output_array_indices(type,para) {
#We have three different cases:
# * _CLASS_ARRAYINDEX_OUT_SINGLE_NOCONDITION
# * _CLASS_ARRAYINDEX_OUT_SINGLE_CONDITION_conditionargument
# * _CLASS_ARRAYINDEX_OUT_ARRAY_sizeargument
#is it the "_CLASS_ARRAYINDEX_OUT_SINGLE_NOCONDITION" case ?
if (index(para,"_CLASS_ARRAYINDEX_OUT_SINGLE_NOCONDITION") != 0) {
printf " if ( (*%s != MPI_UNDEFINED) && (*%s >= 0))\n", para, para
printf " (*%s)++;\n", para, para
}
#is it the "_CLASS_ARRAYINDEX_OUT_SINGLE_CONDITION_<ARG>" case ?
if (index(para,"_CLASS_ARRAYINDEX_OUT_SINGLE_CONDITION_") != 0) {
#extract the name of the "conditionargument" parameter
splitstring="_CLASS_ARRAYINDEX_OUT_SINGLE_CONDITION_"
split(para,condtemp,splitstring)
cond = condtemp[2]
printf " if ( (*%s) && (*%s != MPI_UNDEFINED) && (*%s >= 0))\n", cond, para, para
printf " (*%s)++;\n", para, para
}
#is it the "_CLASS_ARRAYINDEX_OUT_ARRAY_<ARG>" case ?
if (index(para,"_CLASS_ARRAYINDEX_OUT_ARRAY_") != 0) {
#extract the name of the "conditionargument" parameter
splitstring="_CLASS_ARRAYINDEX_OUT_ARRAY_"
split(para,counttemp,splitstring)
count = counttemp[2]
printf " if ( *%s != MPI_UNDEFINED )\n {\n", count
printf " int j;\n"
printf " for (j = 0; j < *%s; j++)\n {\n", count
printf " if ( (%s[j] != MPI_UNDEFINED) && (%s[j] >= 0))\n", para, para
printf " %s[j]++;\n }\n }\n", para, para
}
}
End-of-File
@AWK@ -f $tmp.awk -F, <$tmp.tmp >>$tmp.c
if test $? -ne 0; then exit $?; fi
mv $tmp.c $out
rm $tmp.awk
exit 0

Просмотреть файл

@ -1,159 +0,0 @@
##
# @configure_input@
#
# make vtlib/vt_mpireg.gen.[c|h]
##
# exit the script if any statement returns a non-true return value
set -e
export SRCDIR=@top_vt_srcdir@/config/mpigen
have_mpi2_thread=@VT_MPIGEN_HAVE_MPI2_THREAD@
have_mpi2_1sided=@VT_MPIGEN_HAVE_MPI2_1SIDED@
have_mpi2_extcoll=@VT_MPIGEN_HAVE_MPI2_EXTCOLL@
have_mpi2_file=@VT_MPIGEN_HAVE_MPI2_IO@
have_mpi2_proc=0 #@VT_MPIGEN_HAVE_MPI2_PROC@
have_mpi2=0
if [ $have_mpi2_thread = 1 -o $have_mpi2_1sided = 1 -o $have_mpi2_extcoll = 1 -o $have_mpi2_proc = 1 ] ; then
have_mpi2=1
fi
mpi2_src1=""; if [ $have_mpi2 = 1 ] ; then mpi2_src1="mpi2_standard.h"; fi
mpi2_src2=""; if [ $have_mpi2_thread = 1 ] ; then mpi2_src2="mpi2_thread.h"; fi
mpi2_src3=""; if [ $have_mpi2_1sided = 1 ] ; then mpi2_src3="mpi2_1sided.h"; fi
mpi2_src4=""; if [ $have_mpi2_extcoll = 1 ] ; then mpi2_src4="mpi2_extcoll.h"; fi
mpi2_src5=""; if [ $have_mpi2_file = 1 ] ; then mpi2_src5="mpi2_file.h"; fi
mpi2_src6=""; if [ $have_mpi2_proc = 1 ] ; then mpi2_src6="mpi2_proc.h"; fi
src="mpi_standard.h $mpi2_src1 $mpi2_src2 $mpi2_src3 $mpi2_src4 $mpi2_src5 $mpi2_src6"
outprefix=@top_vt_builddir@/vtlib/vt_mpireg.gen
tmp=tmp$$
trap "rm -f $tmp.*; exit" 0 1 2 3 15
rm -f $tmp.tmp $outprefix.c $outprefix.h
for s in $src; do
if [ ! -f $SRCDIR/$s ] ; then
echo "$0: error: $SRCDIR/$s not found!"
exit 1
fi
grep ' MPI_.*(.*)' $SRCDIR/$s \
| sed >>$tmp.tmp \
-e '/typedef /d' \
-e 's/( *void *)/()/' \
-e 's/ */ /g' \
-e 's/ /,/' \
-e 's/(/,/' \
-e 's/);//' \
-e 's/, /,/g' \
-e 's/,$//'
done
cat <<End-of-File >$tmp.h
/**
* VampirTrace
* http://www.tu-dresden.de/zih/vampirtrace
*
* Copyright (c) 2005-2013, ZIH, TU Dresden, Federal Republic of Germany
*
* Copyright (c) 1998-2005, Forschungszentrum Juelich, Juelich Supercomputing
* Centre, Federal Republic of Germany
*
* See the file COPYING in the package base directory for details
*
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
* ! BUILT BY mk_registry.sh; DO NOT EDIT THIS FILE !
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
**/
End-of-File
export IDX=0
cat <<End-of-File >$tmp.awk
{
# MPI function registry
#
# \$1 is the return type
# \$2 is the call name
# \$3,\$4,... parameters
mpicall=\$2
idx=ENVIRON["IDX"]++
printf "#define VT__%s %i\n", toupper(mpicall), idx++
}
End-of-File
@AWK@ -f $tmp.awk -F, <$tmp.tmp >>$tmp.h
if test $? -ne 0; then exit $?; fi
num=`grep VT__ $tmp.h | wc -l`
cat <<End-of-File >>$tmp.h
#define VT__MPI_REGID_NUM $num
End-of-File
mv $tmp.h $outprefix.h
rm $tmp.awk
cat <<End-of-File >$tmp.c
/**
* VampirTrace
* http://www.tu-dresden.de/zih/vampirtrace
*
* Copyright (c) 2005-2013, ZIH, TU Dresden, Federal Republic of Germany
*
* Copyright (c) 1998-2005, Forschungszentrum Juelich, Juelich Supercomputing
* Centre, Federal Republic of Germany
*
* See the file COPYING in the package base directory for details
*
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
* ! BUILT BY mk_registry.sh; DO NOT EDIT THIS FILE !
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
**/
End-of-File
cat <<End-of-File >$tmp.awk
{
# MPI function registry
#
# \$1 is the return type
# \$2 is the call name
# \$3, \$4,... parameters
mpicall=\$2
if ( index(mpicall,"MPI_Init") > 0 )
next;
split(\$NF,lastparam, " ")
if ( lastparam[3] == "/*COLL_BARRIER*/" )
type="VT_MPI_COLL_BARRIER"
else if ( lastparam[3] == "/*COLL_ONE2ALL*/" )
type="VT_MPI_COLL_ONE2ALL"
else if ( lastparam[3] == "/*COLL_ALL2ONE*/" )
type="VT_MPI_COLL_ALL2ONE"
else if ( lastparam[3] == "/*COLL_ALL2ALL*/" )
type="VT_MPI_COLL_ALL2ALL"
else
type="VT_MPI_FUNCTION"
printf" vt_mpi_regid[VT__%s] =\n", toupper(mpicall)
printf" vt_def_region(VT_CURRENT_THREAD, \\"%s\\", mpi_fid, VT_NO_LNO, VT_NO_LNO, NULL, %s);\n",
mpicall, type
}
End-of-File
@AWK@ -f $tmp.awk -F, <$tmp.tmp >>$tmp.c
if test $? -ne 0; then exit $?; fi
mv $tmp.c $outprefix.c
rm $tmp.awk
exit 0

Просмотреть файл

@ -1,51 +0,0 @@
/**
* MPI-calls of MPI-2-standard (One-Sided Communications)
*
* @see MPI-2 standard
*
* @author Bettina Krammer, Katrin Bidmon, Matthias Mueller, Tobias Hilbrich
* Matthias Jurenz
*
* For Fortran we need additional information for the arguments.
* That is necessary for the handle conversion for MPI-Implementations like
* OpenMPI.
* We need for all MPI-Handles of pointer type information how the argument
* is used. That means we have to know whether it is:
* * an out single value
* * an in-out single value
* * an array for input purpoeses
* * an out array for output purposes
* * an in-out array
* For the arrays we additionally need to know their size !
* We have to denote all this in the argument name, so we will append at the
* end of these argument names:
* * _CLASS_SINGLE_IN for an in single value
* (this is often used for requests)
* * _CLASS_SINGLE_OUT for an out single value
* * _CLASS_SINGLE_IO for an in-out single value
* * _CLASS_BUFFER a buffer that can be MPI_BOTTOM
* * _CLASS_BUFFER_IN_PLACE a buffer that can be MPI_BOTTOM
* and/or MPI_IN_PLACE
* * _CLASS_ARRAY_IN_sizeargument an array for input purpoeses
* * _CLASS_ARRAY_OUT_sizeargument an out array for output purposes
* * _CLASS_ARRAY_IO_sizeargument an in-out array
* Where "sizeargument" is the fixed numeric size or the argument speci-
* fing the array size.
* Otherwise we would have to create the wrapper manually.
*
**/
VT_MPI_INT MPI_Accumulate(CONST void* origin_addr_CLASS_BUFFER, VT_MPI_INT origin_count, MPI_Datatype origin_datatype, VT_MPI_INT target_rank, MPI_Aint target_disp, VT_MPI_INT target_count, MPI_Datatype target_datatype, MPI_Op op, MPI_Win win);
VT_MPI_INT MPI_Get(void* origin_addr_CLASS_BUFFER, VT_MPI_INT origin_count, MPI_Datatype origin_datatype, VT_MPI_INT target_rank, MPI_Aint target_disp, VT_MPI_INT target_count, MPI_Datatype target_datatype, MPI_Win win);
VT_MPI_INT MPI_Put(CONST void* origin_addr_CLASS_BUFFER, VT_MPI_INT origin_count, MPI_Datatype origin_datatype, VT_MPI_INT target_rank, MPI_Aint target_disp, VT_MPI_INT target_count, MPI_Datatype target_datatype, MPI_Win win);
VT_MPI_INT MPI_Win_complete(MPI_Win win);
VT_MPI_INT MPI_Win_create(void* base, MPI_Aint size, VT_MPI_INT disp_unit, MPI_Info info, MPI_Comm comm, MPI_Win* win_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Win_fence(VT_MPI_INT assert, MPI_Win win);
VT_MPI_INT MPI_Win_free(MPI_Win* win_CLASS_SINGLE_IO);
VT_MPI_INT MPI_Win_get_group(MPI_Win win, MPI_Group* group_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Win_lock(VT_MPI_INT lock_type, VT_MPI_INT rank, VT_MPI_INT assert, MPI_Win win);
VT_MPI_INT MPI_Win_post(MPI_Group group, VT_MPI_INT assert, MPI_Win win);
VT_MPI_INT MPI_Win_start(MPI_Group group, VT_MPI_INT assert, MPI_Win win);
VT_MPI_INT MPI_Win_test(MPI_Win win, VT_MPI_INT* flag);
VT_MPI_INT MPI_Win_unlock(VT_MPI_INT rank, MPI_Win win);
VT_MPI_INT MPI_Win_wait(MPI_Win win);

Просмотреть файл

@ -1,39 +0,0 @@
/**
* MPI-calls of MPI-2-standard (Extended Collective Operations)
*
* @see MPI-2 standard
*
* @author Bettina Krammer, Katrin Bidmon, Matthias Mueller, Tobias Hilbrich
* Matthias Jurenz
*
* For Fortran we need additional information for the arguments.
* That is necessary for the handle conversion for MPI-Implementations like
* OpenMPI.
* We need for all MPI-Handles of pointer type information how the argument
* is used. That means we have to know whether it is:
* * an out single value
* * an in-out single value
* * an array for input purpoeses
* * an out array for output purposes
* * an in-out array
* For the arrays we additionally need to know their size !
* We have to denote all this in the argument name, so we will append at the
* end of these argument names:
* * _CLASS_SINGLE_IN for an in single value
* (this is often used for requests)
* * _CLASS_SINGLE_OUT for an out single value
* * _CLASS_SINGLE_IO for an in-out single value
* * _CLASS_BUFFER a buffer that can be MPI_BOTTOM
* * _CLASS_BUFFER_IN_PLACE a buffer that can be MPI_BOTTOM
* and/or MPI_IN_PLACE
* * _CLASS_ARRAY_IN_sizeargument an array for input purpoeses
* * _CLASS_ARRAY_OUT_sizeargument an out array for output purposes
* * _CLASS_ARRAY_IO_sizeargument an in-out array
* Where "sizeargument" is the fixed numeric size or the argument speci-
* fing the array size.
* Otherwise we would have to create the wrapper manually.
*
**/
VT_MPI_INT MPI_Alltoallw(CONST void* sendbuf_CLASS_BUFFER, CONST VT_MPI_INT* sendcounts, CONST VT_MPI_INT* sdispls, CONST MPI_Datatype* sendtypes_CLASS_ARRAY_IN_sendcounts, void* recvbuf_CLASS_BUFFER, CONST VT_MPI_INT* recvcounts, CONST VT_MPI_INT* rdispls, CONST MPI_Datatype* recvtypes_CLASS_ARRAY_IN_recvcounts, MPI_Comm comm); /*COLL_ALL2ALL*/
VT_MPI_INT MPI_Exscan(CONST void* sendbuf_CLASS_BUFFER, void* recvbuf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm); /*COLL_ALL2ALL*/

Просмотреть файл

@ -1,89 +0,0 @@
/**
* MPI-calls of MPI-2-standard (I/O)
*
* @see MPI-2 standard
*
* @author Bettina Krammer, Katrin Bidmon, Matthias Mueller, Tobias Hilbrich
* Matthias Jurenz
*
* For Fortran we need additional information for the arguments.
* That is necessary for the handle conversion for MPI-Implementations like
* OpenMPI.
* We need for all MPI-Handles of pointer type information how the argument
* is used. That means we have to know whether it is:
* * an out single value
* * an in-out single value
* * an array for input purpoeses
* * an out array for output purposes
* * an in-out array
* For the arrays we additionally need to know their size !
* We have to denote all this in the argument name, so we will append at the
* end of these argument names:
* * _CLASS_SINGLE_IN for an in single value
* (this is often used for requests)
* * _CLASS_SINGLE_OUT for an out single value
* * _CLASS_SINGLE_IO for an in-out single value
* * _CLASS_BUFFER a buffer that can be MPI_BOTTOM
* * _CLASS_BUFFER_IN_PLACE a buffer that can be MPI_BOTTOM
* and/or MPI_IN_PLACE
* * _CLASS_ARRAY_IN_sizeargument an array for input purpoeses
* * _CLASS_ARRAY_OUT_sizeargument an out array for output purposes
* * _CLASS_ARRAY_IO_sizeargument an in-out array
* Where "sizeargument" is the fixed numeric size or the argument speci-
* fing the array size.
* Otherwise we would have to create the wrapper manually.
*
**/
VT_MPI_INT MPI_File_open(MPI_Comm comm, CONST char* filename_CLASS_SINGLE_IN, VT_MPI_INT amode, MPI_Info info, MPI_File* fh_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_File_close(MPI_File* fh_CLASS_SINGLE_IO);
VT_MPI_INT MPI_File_delete(CONST char* filename_CLASS_SINGLE_IN, MPI_Info info);
VT_MPI_INT MPI_File_set_size(MPI_File fh, MPI_Offset size);
VT_MPI_INT MPI_File_preallocate(MPI_File fh, MPI_Offset size);
VT_MPI_INT MPI_File_get_size(MPI_File fh, MPI_Offset* size_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_File_get_group(MPI_File fh, MPI_Group* group_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_File_get_amode(MPI_File fh, VT_MPI_INT* amode);
VT_MPI_INT MPI_File_set_info(MPI_File fh, MPI_Info info);
VT_MPI_INT MPI_File_get_info(MPI_File fh, MPI_Info* info_used_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_File_set_view(MPI_File fh, MPI_Offset disp, MPI_Datatype etype, MPI_Datatype filetype, CONST char* datarep_CLASS_SINGLE_IN, MPI_Info info);
VT_MPI_INT MPI_File_get_view(MPI_File fh, MPI_Offset* disp_CLASS_SINGLE_OUT, MPI_Datatype* etype_CLASS_SINGLE_OUT, MPI_Datatype* filetype_CLASS_SINGLE_OUT, char* datarep_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_File_read_at(MPI_File fh, MPI_Offset offset, void* buf, VT_MPI_INT count, MPI_Datatype datatype, MPI_Status* status_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_File_read_at_all(MPI_File fh, MPI_Offset offset, void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype, MPI_Status* status_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_File_write_at(MPI_File fh, MPI_Offset offset, CONST void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype, MPI_Status* status_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_File_write_at_all(MPI_File fh, MPI_Offset offset, CONST void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype, MPI_Status* status_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_File_iread_at(MPI_File fh, MPI_Offset offset, void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype, MPI_Request* request_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_File_iwrite_at(MPI_File fh, MPI_Offset offset, CONST void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype, MPI_Request* request_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_File_read(MPI_File fh, void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype, MPI_Status* status_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_File_read_all(MPI_File fh, void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype, MPI_Status* status_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_File_write(MPI_File fh, CONST void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype, MPI_Status* status_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_File_write_all(MPI_File fh, CONST void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype, MPI_Status* status_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_File_iread(MPI_File fh, void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype, MPI_Request* request_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_File_iwrite(MPI_File fh, CONST void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype, MPI_Request* request_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_File_seek(MPI_File fh, MPI_Offset offset, VT_MPI_INT whence);
VT_MPI_INT MPI_File_get_position(MPI_File fh, MPI_Offset* offset_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_File_get_byte_offset(MPI_File fh, MPI_Offset offset, MPI_Offset* disp_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_File_read_shared(MPI_File fh, void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype, MPI_Status* status_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_File_write_shared(MPI_File fh, CONST void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype, MPI_Status* status_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_File_iread_shared(MPI_File fh, void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype, MPI_Request* request_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_File_iwrite_shared(MPI_File fh, CONST void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype, MPI_Request* request_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_File_read_ordered(MPI_File fh, void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype, MPI_Status* status_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_File_write_ordered(MPI_File fh, CONST void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype, MPI_Status* status_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_File_seek_shared(MPI_File fh, MPI_Offset offset, VT_MPI_INT whence);
VT_MPI_INT MPI_File_get_position_shared(MPI_File fh, MPI_Offset* offset_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_File_read_at_all_begin(MPI_File fh, MPI_Offset offset, void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype);
VT_MPI_INT MPI_File_read_at_all_end(MPI_File fh, void* buf, MPI_Status* status_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_File_write_at_all_begin(MPI_File fh, MPI_Offset offset, CONST void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype);
VT_MPI_INT MPI_File_write_at_all_end(MPI_File fh, CONST void* buf, MPI_Status* status_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_File_read_all_begin(MPI_File fh, void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype);
VT_MPI_INT MPI_File_read_all_end(MPI_File fh, void* buf, MPI_Status* status_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_File_write_all_begin(MPI_File fh, CONST void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype);
VT_MPI_INT MPI_File_write_all_end(MPI_File fh, CONST void* buf, MPI_Status* status_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_File_read_ordered_begin(MPI_File fh, void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype);
VT_MPI_INT MPI_File_read_ordered_end(MPI_File fh, void* buf, MPI_Status* status_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_File_write_ordered_begin(MPI_File fh, CONST void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype);
VT_MPI_INT MPI_File_write_ordered_end(MPI_File fh, CONST void* buf, MPI_Status* status_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_File_get_type_extent(MPI_File fh, MPI_Datatype datatype, MPI_Aint* extent_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_File_set_atomicity(MPI_File fh, VT_MPI_INT flag);
VT_MPI_INT MPI_File_get_atomicity(MPI_File fh, VT_MPI_INT* flag);
VT_MPI_INT MPI_File_sync(MPI_File fh);
VT_MPI_INT MPI_Register_datarep(CONST char* datarep_CLASS_SINGLE_IN, MPI_Datarep_conversion_function* read_conversion_fn, MPI_Datarep_conversion_function* write_conversion_fn, MPI_Datarep_extent_function* dtype_file_extent_fn, void* extra_state);

Просмотреть файл

@ -1,49 +0,0 @@
/**
* MPI-calls of MPI-2-standard (Process Creation and Management)
*
* @see MPI-2 standard
*
* @author Bettina Krammer, Katrin Bidmon, Matthias Mueller, Tobias Hilbrich
* Matthias Jurenz
*
* For Fortran we need additional information for the arguments.
* That is necessary for the handle conversion for MPI-Implementations like
* OpenMPI.
* We need for all MPI-Handles of pointer type information how the argument
* is used. That means we have to know whether it is:
* * an out single value
* * an in-out single value
* * an array for input purpoeses
* * an out array for output purposes
* * an in-out array
* For the arrays we additionally need to know their size !
* We have to denote all this in the argument name, so we will append at the
* end of these argument names:
* * _CLASS_SINGLE_IN for an in single value
* (this is often used for requests)
* * _CLASS_SINGLE_OUT for an out single value
* * _CLASS_SINGLE_IO for an in-out single value
* * _CLASS_BUFFER a buffer that can be MPI_BOTTOM
* * _CLASS_BUFFER_IN_PLACE a buffer that can be MPI_BOTTOM
* and/or MPI_IN_PLACE
* * _CLASS_ARRAY_IN_sizeargument an array for input purpoeses
* * _CLASS_ARRAY_OUT_sizeargument an out array for output purposes
* * _CLASS_ARRAY_IO_sizeargument an in-out array
* Where "sizeargument" is the fixed numeric size or the argument speci-
* fing the array size.
* Otherwise we would have to create the wrapper manually.
*
**/
VT_MPI_INT MPI_Close_port(CONST char* port_name_CLASS_SINGLE_IN);
VT_MPI_INT MPI_Comm_accept(CONST char* port_name_CLASS_SINGLE_IN, MPI_Info info, VT_MPI_INT root, MPI_Comm comm, MPI_Comm* newcomm_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Comm_connect(CONST char* port_name_CLASS_SINGLE_IN, MPI_Info info, VT_MPI_INT root, MPI_Comm comm, MPI_Comm* newcomm_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Comm_disconnect(MPI_Comm* comm_CLASS_SINGLE_IO);
VT_MPI_INT MPI_Comm_get_parent(MPI_Comm* parent_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Comm_join(VT_MPI_INT fd, MPI_Comm* intercomm_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Comm_spawn(const char* command_CLASS_SINGLE_IN, char** argv, VT_MPI_INT maxprocs, MPI_Info info, VT_MPI_INT root, MPI_Comm comm, MPI_Comm* intercomm_CLASS_SINGLE_OUT, VT_MPI_INT* array_of_errcodes);
VT_MPI_INT MPI_Comm_spawn_multiple(VT_MPI_INT count, char** array_of_commands, char*** array_of_argv, CONST VT_MPI_INT* array_of_maxprocs, CONST MPI_Info* array_of_info_CLASS_ARRAY_IN_count, VT_MPI_INT root, MPI_Comm comm, MPI_Comm* intercomm_CLASS_SINGLE_OUT, VT_MPI_INT* array_of_errcodes);
VT_MPI_INT MPI_Lookup_name(CONST char* service_name_CLASS_SINGLE_IN, MPI_Info info, char* port_name_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Open_port(MPI_Info info, char* port_name_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Publish_name(CONST char* service_name_CLASS_SINGLE_IN, MPI_Info info, CONST char* port_name_CLASS_SINGLE_IN);
VT_MPI_INT MPI_Unpublish_name(CONST char* service_name_CLASS_SINGLE_IN, MPI_Info info, CONST char* port_name_CLASS_SINGLE_IN);

Просмотреть файл

@ -1,115 +0,0 @@
/**
* MPI-calls of MPI-2-standard (Miscellany and External Interfaces)
*
* @see MPI-2 standard
*
* @author Bettina Krammer, Katrin Bidmon, Matthias Mueller, Tobias Hilbrich
* Matthias Jurenz
*
* For Fortran we need additional information for the arguments.
* That is necessary for the handle conversion for MPI-Implementations like
* OpenMPI.
* We need for all MPI-Handles of pointer type information how the argument
* is used. That means we have to know whether it is:
* * an out single value
* * an in-out single value
* * an array for input purpoeses
* * an out array for output purposes
* * an in-out array
* For the arrays we additionally need to know their size !
* We have to denote all this in the argument name, so we will append at the
* end of these argument names:
* * _CLASS_SINGLE_IN for an in single value
* (this is often used for requests)
* * _CLASS_SINGLE_OUT for an out single value
* * _CLASS_SINGLE_IO for an in-out single value
* * _CLASS_BUFFER a buffer that can be MPI_BOTTOM
* * _CLASS_BUFFER_IN_PLACE a buffer that can be MPI_BOTTOM
* and/or MPI_IN_PLACE
* * _CLASS_ARRAY_IN_sizeargument an array for input purpoeses
* * _CLASS_ARRAY_OUT_sizeargument an out array for output purposes
* * _CLASS_ARRAY_IO_sizeargument an in-out array
* Where "sizeargument" is the fixed numeric size or the argument speci-
* fing the array size.
* Otherwise we would have to create the wrapper manually.
*
**/
/* Miscellany */
VT_MPI_INT MPI_Alloc_mem(MPI_Aint size, MPI_Info info, void* baseptr);
VT_MPI_INT MPI_Comm_create_errhandler(MPI_Comm_errhandler_fn* function, MPI_Errhandler* errhandler_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Comm_get_errhandler(MPI_Comm comm, MPI_Errhandler* errhandler_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Comm_set_errhandler(MPI_Comm comm, MPI_Errhandler errhandler);
VT_MPI_INT MPI_File_call_errhandler(MPI_File fh, VT_MPI_INT errorcode);
VT_MPI_INT MPI_File_create_errhandler(MPI_File_errhandler_fn* function_CLASS_SINGLE_IN, MPI_Errhandler* errhandler_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_File_get_errhandler(MPI_File file, MPI_Errhandler* errhandler_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_File_set_errhandler(MPI_File file, MPI_Errhandler errhandler);
VT_MPI_INT MPI_Finalized(VT_MPI_INT* flag);
VT_MPI_INT MPI_Free_mem(void* base);
VT_MPI_INT MPI_Get_address(CONST void* location, MPI_Aint* address_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Info_create(MPI_Info* info_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Info_delete(MPI_Info info, CONST char* key_CLASS_SINGLE_IN);
VT_MPI_INT MPI_Info_dup(MPI_Info info, MPI_Info* newinfo_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Info_free(MPI_Info* info_CLASS_SINGLE_IO);
VT_MPI_INT MPI_Info_get(MPI_Info info, CONST char* key_CLASS_SINGLE_IN, VT_MPI_INT valuelen, char* value_CLASS_SINGLE_OUT, VT_MPI_INT* flag);
VT_MPI_INT MPI_Info_get_nkeys(MPI_Info info, VT_MPI_INT* nkeys);
VT_MPI_INT MPI_Info_get_nthkey(MPI_Info info, VT_MPI_INT n, char* key_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Info_get_valuelen(MPI_Info info, CONST char* key_CLASS_SINGLE_IN, VT_MPI_INT* valuelen, VT_MPI_INT* flag);
VT_MPI_INT MPI_Info_set(MPI_Info info, CONST char* key_CLASS_SINGLE_IN, CONST char* value_CLASS_SINGLE_IN);
VT_MPI_INT MPI_Pack_external(CONST char* datarep_CLASS_SINGLE_IN, CONST void* inbuf, VT_MPI_INT incount, MPI_Datatype datatype, void* outbuf, MPI_Aint outsize, MPI_Aint* position_CLASS_SINGLE_IO);
VT_MPI_INT MPI_Pack_external_size(CONST char* datarep_CLASS_SINGLE_IN, VT_MPI_INT incount, MPI_Datatype datatype, MPI_Aint* size_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Request_get_status(MPI_Request request, VT_MPI_INT* flag, MPI_Status* status_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Type_create_darray(VT_MPI_INT size, VT_MPI_INT rank, VT_MPI_INT ndims, CONST VT_MPI_INT* array_of_gsizes, CONST VT_MPI_INT* array_of_distribs, CONST VT_MPI_INT* array_of_dargs, CONST VT_MPI_INT* array_of_psizes, VT_MPI_INT order, MPI_Datatype oldtype, MPI_Datatype* newtype_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Type_create_hindexed(VT_MPI_INT count, CONST VT_MPI_INT* array_of_blocklengths, CONST MPI_Aint* array_of_displacements_CLASS_ARRAY_IN_count, MPI_Datatype oldtype, MPI_Datatype* newtype_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Type_create_hvector(VT_MPI_INT count, VT_MPI_INT blocklength, MPI_Aint stride, MPI_Datatype oldtype, MPI_Datatype* newtype_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Type_create_indexed_block(VT_MPI_INT count, VT_MPI_INT blocklength, CONST VT_MPI_INT* array_of_displacements, MPI_Datatype oldtype, MPI_Datatype* newtype_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Type_create_resized(MPI_Datatype oldtype, MPI_Aint lb, MPI_Aint extent, MPI_Datatype* newtype_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Type_create_struct(VT_MPI_INT count, CONST VT_MPI_INT* array_of_blocklengths, CONST MPI_Aint* array_of_displacements_CLASS_ARRAY_IN_count, CONST MPI_Datatype* array_of_types_CLASS_ARRAY_IN_count, MPI_Datatype* newtype_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Type_create_subarray(VT_MPI_INT ndims, CONST VT_MPI_INT* array_of_sizes, CONST VT_MPI_INT* array_of_subsizes, CONST VT_MPI_INT* array_of_starts, VT_MPI_INT order, MPI_Datatype oldtype, MPI_Datatype* newtype_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Type_get_extent(MPI_Datatype datatype, MPI_Aint* lb_CLASS_SINGLE_OUT, MPI_Aint* extent_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Type_get_true_extent(MPI_Datatype datatype, MPI_Aint* true_lb_CLASS_SINGLE_OUT, MPI_Aint* true_extent_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Unpack_external(CONST char* datarep_CLASS_SINGLE_IN, CONST void* inbuf, MPI_Aint insize, MPI_Aint* position_CLASS_SINGLE_IO, void* outbuf, VT_MPI_INT outcount, MPI_Datatype datatype);
VT_MPI_INT MPI_Win_create_errhandler(MPI_Win_errhandler_fn* function, MPI_Errhandler* errhandler_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Win_get_errhandler(MPI_Win win, MPI_Errhandler* errhandler_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Win_set_errhandler(MPI_Win win, MPI_Errhandler errhandler);
/* External Interfaces */
VT_MPI_INT MPI_Add_error_class(VT_MPI_INT* errorclass);
VT_MPI_INT MPI_Add_error_code(VT_MPI_INT errorclass, VT_MPI_INT* errorcode);
VT_MPI_INT MPI_Add_error_string(VT_MPI_INT errorcode, CONST char* string_CLASS_SINGLE_IN);
VT_MPI_INT MPI_Comm_call_errhandler(MPI_Comm comm, VT_MPI_INT errorcode);
VT_MPI_INT MPI_Comm_create_keyval(MPI_Comm_copy_attr_function* comm_copy_attr_fn, MPI_Comm_delete_attr_function* comm_delete_attr_fn, VT_MPI_INT* comm_keyval, void* extra_state);
VT_MPI_INT MPI_Comm_delete_attr(MPI_Comm comm, VT_MPI_INT comm_keyval);
VT_MPI_INT MPI_Comm_free_keyval(VT_MPI_INT* comm_keyval);
VT_MPI_INT MPI_Comm_get_attr(MPI_Comm comm, VT_MPI_INT comm_keyval, void* attribute_val, VT_MPI_INT* flag);
VT_MPI_INT MPI_Comm_get_name(MPI_Comm comm, char* comm_name_CLASS_SINGLE_OUT, VT_MPI_INT* resultlen);
VT_MPI_INT MPI_Comm_set_attr(MPI_Comm comm, VT_MPI_INT comm_keyval, void* attribute_val);
VT_MPI_INT MPI_Comm_set_name(MPI_Comm comm, CONST char* comm_name_CLASS_SINGLE_IN);
VT_MPI_INT MPI_Grequest_complete(MPI_Request request);
VT_MPI_INT MPI_Grequest_start(MPI_Grequest_query_function* query_fn, MPI_Grequest_free_function* free_fn, MPI_Grequest_cancel_function* cancel_fn, void* extra_state, MPI_Request* request_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Status_set_cancelled(MPI_Status* status_CLASS_SINGLE_IO, VT_MPI_INT flag);
VT_MPI_INT MPI_Status_set_elements(MPI_Status* status_CLASS_SINGLE_IO, MPI_Datatype datatype, VT_MPI_INT count);
VT_MPI_INT MPI_Type_create_keyval(MPI_Type_copy_attr_function* type_copy_attr_fn, MPI_Type_delete_attr_function* type_delete_attr_fn, VT_MPI_INT* type_keyval, void* extra_state);
VT_MPI_INT MPI_Type_delete_attr(MPI_Datatype type, VT_MPI_INT type_keyval);
VT_MPI_INT MPI_Type_dup(MPI_Datatype type, MPI_Datatype* newtype_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Type_free_keyval(VT_MPI_INT* type_keyval);
VT_MPI_INT MPI_Type_get_attr(MPI_Datatype type, VT_MPI_INT type_keyval, void* attribute_val, VT_MPI_INT* flag);
VT_MPI_INT MPI_Type_get_contents(MPI_Datatype datatype, VT_MPI_INT max_integers, VT_MPI_INT max_addresses, VT_MPI_INT max_datatypes, VT_MPI_INT* array_of_integers, MPI_Aint* array_of_addresses_CLASS_ARRAY_OUT_max_addresses, MPI_Datatype* array_of_datatypes_CLASS_ARRAY_OUT_max_datatypes);
VT_MPI_INT MPI_Type_get_envelope(MPI_Datatype datatype, VT_MPI_INT* num_integers, VT_MPI_INT* num_addresses, VT_MPI_INT* num_datatypes, VT_MPI_INT* combiner);
VT_MPI_INT MPI_Type_get_name(MPI_Datatype type, char* type_name_CLASS_SINGLE_OUT, VT_MPI_INT* resultlen);
VT_MPI_INT MPI_Type_set_attr(MPI_Datatype type, VT_MPI_INT type_keyval, void* attribute_val);
VT_MPI_INT MPI_Type_set_name(MPI_Datatype type, CONST char* type_name_CLASS_SINGLE_IN);
VT_MPI_INT MPI_Win_call_errhandler(MPI_Win win, VT_MPI_INT errorcode);
VT_MPI_INT MPI_Win_create_keyval(MPI_Win_copy_attr_function* win_copy_attr_fn, MPI_Win_delete_attr_function* win_delete_attr_fn, VT_MPI_INT* win_keyval, void* extra_state);
VT_MPI_INT MPI_Win_delete_attr(MPI_Win win, VT_MPI_INT win_keyval);
VT_MPI_INT MPI_Win_free_keyval(VT_MPI_INT* win_keyval);
VT_MPI_INT MPI_Win_get_attr(MPI_Win win, VT_MPI_INT win_keyval, void* attribute_val, VT_MPI_INT* flag);
VT_MPI_INT MPI_Win_get_name(MPI_Win win, char* win_name_CLASS_SINGLE_OUT, VT_MPI_INT* resultlen);
VT_MPI_INT MPI_Win_set_attr(MPI_Win win, VT_MPI_INT win_keyval, void* attribute_val);
VT_MPI_INT MPI_Win_set_name(MPI_Win win, CONST char* win_name_CLASS_SINGLE_IN);
/* Language Bindings */
VT_MPI_INT MPI_Type_create_f90_complex(VT_MPI_INT p, VT_MPI_INT r, MPI_Datatype* newtype_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Type_create_f90_integer(VT_MPI_INT r, MPI_Datatype* newtype_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Type_create_f90_real(VT_MPI_INT p, VT_MPI_INT r, MPI_Datatype* newtype_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Type_match_size(VT_MPI_INT typeclass, VT_MPI_INT size, MPI_Datatype* type_CLASS_SINGLE_OUT);

Просмотреть файл

@ -1,40 +0,0 @@
/**
* MPI-calls of MPI-2-standard (Miscellany and External Interfaces)
*
* @see MPI-2 standard
*
* @author Bettina Krammer, Katrin Bidmon, Matthias Mueller, Tobias Hilbrich
* Matthias Jurenz
*
* For Fortran we need additional information for the arguments.
* That is necessary for the handle conversion for MPI-Implementations like
* OpenMPI.
* We need for all MPI-Handles of pointer type information how the argument
* is used. That means we have to know whether it is:
* * an out single value
* * an in-out single value
* * an array for input purpoeses
* * an out array for output purposes
* * an in-out array
* For the arrays we additionally need to know their size !
* We have to denote all this in the argument name, so we will append at the
* end of these argument names:
* * _CLASS_SINGLE_IN for an in single value
* (this is often used for requests)
* * _CLASS_SINGLE_OUT for an out single value
* * _CLASS_SINGLE_IO for an in-out single value
* * _CLASS_BUFFER a buffer that can be MPI_BOTTOM
* * _CLASS_BUFFER_IN_PLACE a buffer that can be MPI_BOTTOM
* and/or MPI_IN_PLACE
* * _CLASS_ARRAY_IN_sizeargument an array for input purpoeses
* * _CLASS_ARRAY_OUT_sizeargument an out array for output purposes
* * _CLASS_ARRAY_IO_sizeargument an in-out array
* Where "sizeargument" is the fixed numeric size or the argument speci-
* fing the array size.
* Otherwise we would have to create the wrapper manually.
*
**/
VT_MPI_INT MPI_Init_thread(VT_MPI_INT* argc, char*** argv, VT_MPI_INT required, VT_MPI_INT* provided);
VT_MPI_INT MPI_Is_thread_main(VT_MPI_INT* flag);
VT_MPI_INT MPI_Query_thread(VT_MPI_INT* provided);

Просмотреть файл

@ -1,166 +0,0 @@
/**
* MPI-calls of MPI-1.2-standard (Complete C Language Binding)
*
* @see MPI-1.2 standard
*
* @author Bettina Krammer, Katrin Bidmon, Matthias Mueller, Tobias Hilbrich
* Matthias Jurenz
*
* For Fortran we need additional information for the arguments.
* That is necessary for the handle conversion for MPI-Implementations like
* OpenMPI.
* We need for all MPI-Handles of pointer type information how the argument
* is used. That means we have to know whether it is:
* * an out single value
* * an in-out single value
* * an array for input purpoeses
* * an out array for output purposes
* * an in-out array
* For the arrays we additionally need to know their size !
* We have to denote all this in the argument name, so we will append at the
* end of these argument names:
* * _CLASS_SINGLE_IN for an in single value
* (this is often used for requests)
* * _CLASS_SINGLE_OUT for an out single value
* * _CLASS_SINGLE_IO for an in-out single value
* * _CLASS_BUFFER a buffer that can be MPI_BOTTOM
* * _CLASS_BUFFER_IN_PLACE a buffer that can be MPI_BOTTOM
* and/or MPI_IN_PLACE
* * _CLASS_ARRAY_IN_sizeargument an array for input purpoeses
* * _CLASS_ARRAY_OUT_sizeargument an out array for output purposes
* * _CLASS_ARRAY_IO_sizeargument an in-out array
* Where "sizeargument" is the fixed numeric size or the argument speci-
* fing the array size.
* Otherwise we would have to create the wrapper manually.
*
**/
VT_MPI_INT MPI_Abort(MPI_Comm comm, VT_MPI_INT errorcode);
VT_MPI_INT MPI_Address(CONST void* location, MPI_Aint* address_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Allgather(CONST void* sendbuf_CLASS_BUFFER_IN_PLACE, VT_MPI_INT sendcount, MPI_Datatype sendtype, void* recvbuf_CLASS_BUFFER, VT_MPI_INT recvcount, MPI_Datatype recvtype, MPI_Comm comm); /*COLL_ALL2ALL*/
VT_MPI_INT MPI_Allgatherv(CONST void* sendbuf_CLASS_BUFFER_IN_PLACE, VT_MPI_INT sendcount, MPI_Datatype sendtype, void* recvbuf_CLASS_BUFFER, CONST VT_MPI_INT* recvcounts, CONST VT_MPI_INT* displs, MPI_Datatype recvtype, MPI_Comm comm); /*COLL_ALL2ALL*/
VT_MPI_INT MPI_Allreduce(CONST void* sendbuf_CLASS_BUFFER_IN_PLACE, void* recvbuf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm); /*COLL_ALL2ALL*/
VT_MPI_INT MPI_Alltoall(CONST void* sendbuf_CLASS_BUFFER, VT_MPI_INT sendcount, MPI_Datatype sendtype, void* recvbuf_CLASS_BUFFER, VT_MPI_INT recvcount, MPI_Datatype recvtype, MPI_Comm comm); /*COLL_ALL2ALL*/
VT_MPI_INT MPI_Alltoallv(CONST void* sendbuf_CLASS_BUFFER, CONST VT_MPI_INT* sendcounts, CONST VT_MPI_INT* sdispls, MPI_Datatype sendtype, void* recvbuf_CLASS_BUFFER, CONST VT_MPI_INT* recvcounts, CONST VT_MPI_INT* rdispls, MPI_Datatype recvtype, MPI_Comm comm); /*COLL_ALL2ALL*/
VT_MPI_INT MPI_Attr_delete(MPI_Comm comm, VT_MPI_INT keyval);
VT_MPI_INT MPI_Attr_get(MPI_Comm comm, VT_MPI_INT keyval, void* attribute_val, VT_MPI_INT* flag);
VT_MPI_INT MPI_Attr_put(MPI_Comm comm, VT_MPI_INT keyval, void* attribute_val);
VT_MPI_INT MPI_Barrier(MPI_Comm comm); /*COLL_BARRIER*/
VT_MPI_INT MPI_Bcast(void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype, VT_MPI_INT root, MPI_Comm comm); /*COLL_ONE2ALL*/
VT_MPI_INT MPI_Bsend(void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype, VT_MPI_INT dest, VT_MPI_INT tag, MPI_Comm comm);
VT_MPI_INT MPI_Bsend_init(CONST void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype, VT_MPI_INT dest, VT_MPI_INT tag, MPI_Comm comm, MPI_Request* request_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Buffer_attach(void* buf, VT_MPI_INT size);
VT_MPI_INT MPI_Buffer_detach(void* buf, VT_MPI_INT* size);
VT_MPI_INT MPI_Cancel(MPI_Request* request_CLASS_SINGLE_IN);
VT_MPI_INT MPI_Cart_coords(MPI_Comm comm, VT_MPI_INT rank, VT_MPI_INT maxdims, VT_MPI_INT* coords);
VT_MPI_INT MPI_Cart_create(MPI_Comm comm_old, VT_MPI_INT ndims, CONST VT_MPI_INT* dims, CONST VT_MPI_INT* periods, VT_MPI_INT reorder, MPI_Comm* comm_cart_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Cart_get(MPI_Comm comm, VT_MPI_INT maxdims, VT_MPI_INT* dims, VT_MPI_INT* periods, VT_MPI_INT* coords);
VT_MPI_INT MPI_Cart_map(MPI_Comm comm, VT_MPI_INT ndims, CONST VT_MPI_INT* dims, CONST VT_MPI_INT* periods, VT_MPI_INT* newrank);
VT_MPI_INT MPI_Cart_rank(MPI_Comm comm, CONST VT_MPI_INT* coords, VT_MPI_INT* rank);
VT_MPI_INT MPI_Cart_shift(MPI_Comm comm, VT_MPI_INT direction, VT_MPI_INT disp, VT_MPI_INT* rank_source, VT_MPI_INT* rank_dest);
VT_MPI_INT MPI_Cart_sub(MPI_Comm comm, CONST VT_MPI_INT* remain_dims, MPI_Comm* newcomm_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Cartdim_get(MPI_Comm comm, VT_MPI_INT* ndims);
VT_MPI_INT MPI_Comm_compare(MPI_Comm comm1, MPI_Comm comm2, VT_MPI_INT* _result);
VT_MPI_INT MPI_Comm_create(MPI_Comm comm, MPI_Group group, MPI_Comm* newcomm_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Comm_dup(MPI_Comm comm, MPI_Comm* newcomm_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Comm_free(MPI_Comm* comm_CLASS_SINGLE_IO);
VT_MPI_INT MPI_Comm_group(MPI_Comm comm, MPI_Group* group_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Comm_rank(MPI_Comm comm, VT_MPI_INT* rank);
VT_MPI_INT MPI_Comm_remote_group(MPI_Comm comm, MPI_Group* group_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Comm_remote_size(MPI_Comm comm, VT_MPI_INT* size);
VT_MPI_INT MPI_Comm_size(MPI_Comm comm, VT_MPI_INT* size);
VT_MPI_INT MPI_Comm_split(MPI_Comm comm, VT_MPI_INT color, VT_MPI_INT key, MPI_Comm* newcomm_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Comm_test_inter(MPI_Comm comm, VT_MPI_INT* flag);
VT_MPI_INT MPI_Dims_create(VT_MPI_INT nnodes, VT_MPI_INT ndims, VT_MPI_INT* dims);
VT_MPI_INT MPI_Errhandler_create(MPI_Handler_function* function, MPI_Errhandler* errhandler_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Errhandler_free(MPI_Errhandler* errhandler_CLASS_SINGLE_IN);
VT_MPI_INT MPI_Errhandler_get(MPI_Comm comm, MPI_Errhandler* errhandler_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Errhandler_set(MPI_Comm comm, MPI_Errhandler errhandler);
VT_MPI_INT MPI_Error_class(VT_MPI_INT errorcode, VT_MPI_INT* errorclass);
VT_MPI_INT MPI_Error_string(VT_MPI_INT errorcode, char* string_CLASS_SINGLE_OUT, VT_MPI_INT* resultlen);
VT_MPI_INT MPI_Finalize(void);
VT_MPI_INT MPI_Gather(CONST void* sendbuf_CLASS_BUFFER_IN_PLACE, VT_MPI_INT sendcount, MPI_Datatype sendtype, void* recvbuf_CLASS_BUFFER, VT_MPI_INT recvcount, MPI_Datatype recvtype, VT_MPI_INT root, MPI_Comm comm); /*COLL_ALL2ONE*/
VT_MPI_INT MPI_Gatherv(CONST void* sendbuf_CLASS_BUFFER_IN_PLACE, VT_MPI_INT sendcount, MPI_Datatype sendtype, void* recvbuf_CLASS_BUFFER, CONST VT_MPI_INT* recvcounts, CONST VT_MPI_INT* displs, MPI_Datatype recvtype, VT_MPI_INT root, MPI_Comm comm); /*COLL_ALL2ONE*/
VT_MPI_INT MPI_Get_count(CONST MPI_Status* status_CLASS_SINGLE_IN, MPI_Datatype datatype, VT_MPI_INT* count);
VT_MPI_INT MPI_Get_elements(CONST MPI_Status* status_CLASS_SINGLE_IN, MPI_Datatype datatype, VT_MPI_INT* count);
VT_MPI_INT MPI_Get_processor_name(char* name_CLASS_SINGLE_OUT, VT_MPI_INT* resultlen);
VT_MPI_INT MPI_Get_version(VT_MPI_INT* version, VT_MPI_INT* subversion);
VT_MPI_INT MPI_Graph_create(MPI_Comm comm_old, VT_MPI_INT nnodes, CONST VT_MPI_INT* index, CONST VT_MPI_INT* edges, VT_MPI_INT reorder, MPI_Comm* comm_graph_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Graph_get(MPI_Comm comm, VT_MPI_INT maxindex, VT_MPI_INT maxedges, VT_MPI_INT* index, VT_MPI_INT* edges);
VT_MPI_INT MPI_Graph_map(MPI_Comm comm, VT_MPI_INT nnodes, CONST VT_MPI_INT* index, CONST VT_MPI_INT* edges, VT_MPI_INT* newrank);
VT_MPI_INT MPI_Graph_neighbors(MPI_Comm comm, VT_MPI_INT rank, VT_MPI_INT maxneighbors, VT_MPI_INT* neighbors);
VT_MPI_INT MPI_Graph_neighbors_count(MPI_Comm comm, VT_MPI_INT rank, VT_MPI_INT* nneighbors);
VT_MPI_INT MPI_Graphdims_get(MPI_Comm comm, VT_MPI_INT* nnodes, VT_MPI_INT* nedges);
VT_MPI_INT MPI_Group_compare(MPI_Group group1,MPI_Group group2, VT_MPI_INT* _result);
VT_MPI_INT MPI_Group_difference(MPI_Group group1, MPI_Group group2, MPI_Group* newgroup_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Group_excl(MPI_Group group, VT_MPI_INT n, CONST VT_MPI_INT* ranks, MPI_Group* newgroup_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Group_free(MPI_Group* group_CLASS_SINGLE_IO);
VT_MPI_INT MPI_Group_incl(MPI_Group group, VT_MPI_INT n, CONST VT_MPI_INT* ranks, MPI_Group* newgroup_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Group_intersection(MPI_Group group1, MPI_Group group2, MPI_Group* newgroup_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Group_range_excl(MPI_Group group, VT_MPI_INT n, VT_MPI_INT ranges[][3], MPI_Group* newgroup_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Group_range_incl(MPI_Group group, VT_MPI_INT n, VT_MPI_INT ranges[][3], MPI_Group* newgroup_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Group_rank(MPI_Group group, VT_MPI_INT* rank);
VT_MPI_INT MPI_Group_size(MPI_Group group, VT_MPI_INT* size);
VT_MPI_INT MPI_Group_translate_ranks(MPI_Group group1, VT_MPI_INT n, CONST VT_MPI_INT* ranks1, MPI_Group group2, VT_MPI_INT* ranks2);
VT_MPI_INT MPI_Group_union(MPI_Group group1, MPI_Group group2, MPI_Group* newgroup_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Ibsend(CONST void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype, VT_MPI_INT dest, VT_MPI_INT tag, MPI_Comm comm, MPI_Request* request_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Init(VT_MPI_INT* argc, char*** argv);
VT_MPI_INT MPI_Initialized(VT_MPI_INT* flag);
VT_MPI_INT MPI_Intercomm_create(MPI_Comm local_comm, VT_MPI_INT local_leader, MPI_Comm peer_comm, VT_MPI_INT remote_leader, VT_MPI_INT tag, MPI_Comm* newintercomm_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Intercomm_merge(MPI_Comm intercomm, VT_MPI_INT high, MPI_Comm* newintracomm_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Iprobe(VT_MPI_INT source, VT_MPI_INT tag, MPI_Comm comm, VT_MPI_INT* flag, MPI_Status* status_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Irecv(void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype, VT_MPI_INT source, VT_MPI_INT tag, MPI_Comm comm, MPI_Request* request_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Irsend(CONST void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype, VT_MPI_INT dest, VT_MPI_INT tag, MPI_Comm comm, MPI_Request* request_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Isend(CONST void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype, VT_MPI_INT dest, VT_MPI_INT tag, MPI_Comm comm, MPI_Request* request_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Issend(CONST void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype, VT_MPI_INT dest, VT_MPI_INT tag, MPI_Comm comm, MPI_Request* request_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Keyval_create(MPI_Copy_function* copy_fn, MPI_Delete_function* delete_fn, VT_MPI_INT* keyval, void* extra_state);
VT_MPI_INT MPI_Keyval_free(VT_MPI_INT* keyval);
VT_MPI_INT MPI_Op_create(MPI_User_function* function, VT_MPI_INT commute, MPI_Op* op_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Op_free( MPI_Op* op_CLASS_SINGLE_IO);
VT_MPI_INT MPI_Pack(CONST void* inbuf_CLASS_BUFFER, VT_MPI_INT incount, MPI_Datatype datatype, void* outbuf, VT_MPI_INT outsize, VT_MPI_INT* position, MPI_Comm comm);
VT_MPI_INT MPI_Pack_size(VT_MPI_INT incount, MPI_Datatype datatype, MPI_Comm comm, VT_MPI_INT* size);
VT_MPI_INT MPI_Pcontrol(VT_MPI_INT level, ...);
VT_MPI_INT MPI_Probe(VT_MPI_INT source, VT_MPI_INT tag, MPI_Comm comm, MPI_Status* status_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Recv(void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype, VT_MPI_INT source, VT_MPI_INT tag, MPI_Comm comm, MPI_Status* status_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Recv_init(void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype, VT_MPI_INT source, VT_MPI_INT tag, MPI_Comm comm, MPI_Request* request_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Reduce(CONST void* sendbuf_CLASS_BUFFER_IN_PLACE, void* recvbuf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype, MPI_Op op, VT_MPI_INT root, MPI_Comm comm); /*COLL_ALL2ONE*/
VT_MPI_INT MPI_Reduce_scatter(CONST void* sendbuf_CLASS_BUFFER_IN_PLACE, void* recvbuf_CLASS_BUFFER, CONST VT_MPI_INT* recvcounts, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm); /*COLL_ALL2ALL*/
VT_MPI_INT MPI_Request_free(MPI_Request* request_CLASS_SINGLE_IO);
VT_MPI_INT MPI_Rsend(CONST void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype, VT_MPI_INT dest, VT_MPI_INT tag, MPI_Comm comm);
VT_MPI_INT MPI_Rsend_init(CONST void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype, VT_MPI_INT dest, VT_MPI_INT tag, MPI_Comm comm, MPI_Request* request_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Scan(CONST void* sendbuf_CLASS_BUFFER_IN_PLACE, void* recvbuf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm); /*COLL_ALL2ALL*/
VT_MPI_INT MPI_Scatter(CONST void* sendbuf_CLASS_BUFFER, VT_MPI_INT sendcount, MPI_Datatype sendtype, void* recvbuf_CLASS_BUFFER_IN_PLACE, VT_MPI_INT recvcount, MPI_Datatype recvtype, VT_MPI_INT root, MPI_Comm comm); /*COLL_ONE2ALL*/
VT_MPI_INT MPI_Scatterv(CONST void* sendbuf_CLASS_BUFFER, CONST VT_MPI_INT* sendcounts, CONST VT_MPI_INT* displs, MPI_Datatype sendtype, void* recvbuf_CLASS_BUFFER_IN_PLACE, VT_MPI_INT recvcount, MPI_Datatype recvtype, VT_MPI_INT root, MPI_Comm comm); /*COLL_ONE2ALL*/
VT_MPI_INT MPI_Send(CONST void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype, VT_MPI_INT dest, VT_MPI_INT tag, MPI_Comm comm);
VT_MPI_INT MPI_Send_init(CONST void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype, VT_MPI_INT dest, VT_MPI_INT tag, MPI_Comm comm, MPI_Request* request_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Sendrecv(CONST void* sendbuf_CLASS_BUFFER, VT_MPI_INT sendcount, MPI_Datatype sendtype, VT_MPI_INT dest, VT_MPI_INT sendtag, void* recvbuf_CLASS_BUFFER, VT_MPI_INT recvcount, MPI_Datatype recvtype, VT_MPI_INT source, VT_MPI_INT recvtag, MPI_Comm comm, MPI_Status* status_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Sendrecv_replace(void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype, VT_MPI_INT dest, VT_MPI_INT sendtag, VT_MPI_INT source, VT_MPI_INT recvtag, MPI_Comm comm, MPI_Status* status_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Ssend(CONST void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype, VT_MPI_INT dest, VT_MPI_INT tag, MPI_Comm comm);
VT_MPI_INT MPI_Ssend_init(CONST void* buf_CLASS_BUFFER, VT_MPI_INT count, MPI_Datatype datatype, VT_MPI_INT dest, VT_MPI_INT tag, MPI_Comm comm, MPI_Request* request_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Start(MPI_Request* request_CLASS_SINGLE_IO);
VT_MPI_INT MPI_Startall(VT_MPI_INT count, MPI_Request* array_of_requests_CLASS_ARRAY_IO_count);
VT_MPI_INT MPI_Test(MPI_Request* request_CLASS_SINGLE_IO, VT_MPI_INT* flag, MPI_Status* status_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Test_cancelled(CONST MPI_Status* status_CLASS_SINGLE_IN, VT_MPI_INT* flag);
VT_MPI_INT MPI_Testall(VT_MPI_INT count, MPI_Request* array_of_requests_CLASS_ARRAY_IO_count, VT_MPI_INT* flag, MPI_Status* array_of_statuses_CLASS_ARRAY_OUT_count);
VT_MPI_INT MPI_Testany(VT_MPI_INT count, MPI_Request* array_of_requests_CLASS_ARRAY_IO_count, VT_MPI_INT* index_CLASS_ARRAYINDEX_OUT_SINGLE_CONDITION_flag, VT_MPI_INT* flag, MPI_Status* status_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Testsome(VT_MPI_INT incount, MPI_Request* array_of_requests_CLASS_ARRAY_IO_incount, VT_MPI_INT* outcount, VT_MPI_INT* array_of_indices_CLASS_ARRAYINDEX_OUT_ARRAY_outcount, MPI_Status* array_of_statuses_CLASS_ARRAY_OUT_outcount);
VT_MPI_INT MPI_Topo_test(MPI_Comm comm, VT_MPI_INT* status);
VT_MPI_INT MPI_Type_commit(MPI_Datatype* datatype_CLASS_SINGLE_IO);
VT_MPI_INT MPI_Type_contiguous(VT_MPI_INT count, MPI_Datatype oldtype, MPI_Datatype* newtype_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Type_extent(MPI_Datatype datatype, MPI_Aint* extent_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Type_free(MPI_Datatype* datatype_CLASS_SINGLE_IO);
VT_MPI_INT MPI_Type_hindexed(VT_MPI_INT count, VT_MPI_INT* array_of_blocklengths, MPI_Aint* array_of_displacements_CLASS_ARRAY_IN_count, MPI_Datatype oldtype, MPI_Datatype* newtype_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Type_hvector(VT_MPI_INT count, VT_MPI_INT blocklength, MPI_Aint stride, MPI_Datatype oldtype, MPI_Datatype* newtype_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Type_indexed(VT_MPI_INT count, CONST VT_MPI_INT* array_of_blocklengths, CONST VT_MPI_INT* array_of_displacements, MPI_Datatype oldtype, MPI_Datatype* newtype_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Type_lb(MPI_Datatype datatype, MPI_Aint* displacement_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Type_size(MPI_Datatype datatype, VT_MPI_INT* size);
VT_MPI_INT MPI_Type_struct(VT_MPI_INT count, VT_MPI_INT* array_of_blocklengths, MPI_Aint* array_of_displacements_CLASS_ARRAY_IN_count, MPI_Datatype* array_of_types_CLASS_ARRAY_IN_count, MPI_Datatype* newtype_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Type_ub(MPI_Datatype datatype, MPI_Aint* displacement_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Type_vector(VT_MPI_INT count, VT_MPI_INT blocklength, VT_MPI_INT stride, MPI_Datatype oldtype, MPI_Datatype* newtype_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Unpack(CONST void* inbuf, VT_MPI_INT insize, VT_MPI_INT* position, void* outbuf_CLASS_BUFFER, VT_MPI_INT outcount, MPI_Datatype datatype, MPI_Comm comm);
VT_MPI_INT MPI_Wait(MPI_Request* request_CLASS_SINGLE_IO, MPI_Status* status_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Waitall(VT_MPI_INT count, MPI_Request* array_of_requests_CLASS_ARRAY_IO_count, MPI_Status* array_of_statuses_CLASS_ARRAY_OUT_count);
VT_MPI_INT MPI_Waitany(VT_MPI_INT count, MPI_Request* array_of_requests_CLASS_ARRAY_IO_count, VT_MPI_INT* index_CLASS_ARRAYINDEX_OUT_SINGLE_NOCONDITION, MPI_Status* status_CLASS_SINGLE_OUT);
VT_MPI_INT MPI_Waitsome(VT_MPI_INT incount, MPI_Request* array_of_requests_CLASS_ARRAY_IO_incount, VT_MPI_INT* outcount, VT_MPI_INT* array_of_indices_CLASS_ARRAYINDEX_OUT_ARRAY_outcount, MPI_Status* array_of_statuses_CLASS_ARRAY_OUT_outcount);
double MPI_Wtick(void);
double MPI_Wtime(void);

Просмотреть файл

@ -1,74 +0,0 @@
#ifndef _CONFIG_H
# error "config_bottom.h should only be included from config.h"
#endif /* _CONFIG_H */
#include "util/util.h"
#if !(defined(HAVE_ASPRINTF) && HAVE_ASPRINTF)
# undef asprintf
# define asprintf vt_asprintf
#endif /* HAVE_ASPRINTF */
#if !(defined(HAVE_SNPRINTF) && HAVE_SNPRINTF)
# undef snprintf
# define snprintf vt_snprintf
#endif /* HAVE_SNPRINTF */
#if !(defined(HAVE_VASPRINTF) && HAVE_VASPRINTF)
# undef vasprintf
# define vasprintf vt_vasprintf
#endif /* HAVE_VASPRINTF */
#if !(defined(HAVE_VSNPRINTF) && HAVE_VSNPRINTF)
# undef vsnprintf
# define vsnprintf vt_vsnprintf
#endif /* HAVE_VSNPRINTF */
#if !(defined(HAVE_STRDUP) && HAVE_STRDUP)
# undef strdup
# define strdup vt_strdup
#endif /* HAVE_STRDUP */
#if !(defined(HAVE_MEMMOVE) && HAVE_MEMMOVE)
# undef memmove
# define memmove vt_memmove
#endif /* HAVE_MEMMOVE */
#if defined(HAVE_FNMATCH_H) && HAVE_FNMATCH_H
# include <fnmatch.h>
#else /* HAVE_FNMATCH_H */
# undef fnmatch
# define fnmatch vt_fnmatch
# define FNM_NOESCAPE (1 << 1) /* Backslashes don't quote special chars. */
# define vt_fnmatch(_pattern, _string, __flags) strcmp(_string, _pattern)
#endif /* HAVE_FNMATCH_H */
/* Cannot define assert() at this point, because subsequent #includes of system
header files may implicitly include 'assert.h' which would result in
a redefinition of assert(). */
/*#define assert(expr) vt_assert((expr))*/
#if defined(HAVE_SYS_PARAM_H) && HAVE_SYS_PARAM_H
# include <sys/param.h>
#endif
#if defined(MIN)
# define VT_MIN MIN
#else
# define VT_MIN(a,b) (((a)<(b))?(a):(b))
#endif
#if defined(MAX)
# define VT_MAX MAX
#else
# define VT_MAX(a,b) (((a)>(b))?(a):(b))
#endif
#include <limits.h>
#if defined(PATH_MAX)
# define VT_PATH_MAX (PATH_MAX + 1)
#elif defined(_POSIX_PATH_MAX)
# define VT_PATH_MAX (_POSIX_PATH_MAX + 1)
#else
# define VT_PATH_MAX 256
#endif

Просмотреть файл

@ -1,578 +0,0 @@
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.60)
AC_INIT([VampirTrace], [m4_normalize(esyscmd([cat VERSION]))], [vampirsupport@zih.tu-dresden.de], [VampirTrace])
AC_CONFIG_AUX_DIR(config)
AC_CONFIG_MACRO_DIR(config/m4)
AM_INIT_AUTOMAKE([foreign])
AC_CONFIG_HEADERS(config.h)
# If Automake supports silent rules, enable them.
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
# Check whether we are inside Open MPI package
inside_openmpi="no"
AC_ARG_WITH(openmpi-inside, [],
[
AS_IF([test x"$withval" = "xyes" -o x"$withval" = "x1.7"],
[
inside_openmpi="$withval"
CPPFLAGS="-DINSIDE_OPENMPI $CPPFLAGS"
# Set FC to F77 if Open MPI version < 1.7
AS_IF([test x"$withval" = "xyes" -a x"$FC" = x -a x"$F77" != x],
[FC="$F77"])
])
])
ACVT_CONF_INIT
ACVT_CONF_TITLE([Initialization])
# Check for platform
ACVT_PLATFORM
AM_CONDITIONAL(AMMACOS, test "$PLATFORM" = "macos")
# Get configuration options
ACVT_CONF_OPTIONS
# Setup the top and bottom of the config.h file
AH_TOP([
#ifndef _CONFIG_H
#define _CONFIG_H
])
AH_BOTTOM([
#include "config_bottom.h"
#endif /* _CONFIG_H */
])
# Check for absolute paths of $builddir and $srcdir
top_vt_builddir="`pwd`"
cd "$srcdir"
top_vt_srcdir="`pwd`"
cd "$top_vt_builddir"
AC_MSG_NOTICE([builddir: $top_vt_builddir])
eval "echo $top_vt_builddir | grep \" \"" >/dev/null 2>&1
AS_IF([test "$?" = "0"],
[AC_MSG_ERROR([VampirTrace does not allow whitespace in the build directory path!])])
AC_SUBST(top_vt_builddir)
AC_MSG_NOTICE([srcdir: $top_vt_srcdir])
eval "echo $top_vt_srcdir | grep \" \"" >/dev/null 2>&1
AS_IF([test "$?" = "0"],
[AC_MSG_ERROR([VampirTrace does not allow whitespace in the source directory path!])])
AC_SUBST(top_vt_srcdir)
AS_IF([test "$top_vt_builddir" != "$top_vt_srcdir"],
[AC_MSG_NOTICE([detected VPATH build])])
# Check for file system case sensitivity
ACVT_CSFS
AM_CONDITIONAL(AMHAVECSFS, test x"$have_csfs" = "xyes")
# Correct install paths
AS_IF([test x"$prefix" = x -o x"$prefix" = "xNONE"], [prefix="$ac_default_prefix"])
AS_IF([test x"$exec_prefix" = x -o x"$exec_prefix" = "xNONE"], [exec_prefix="\${prefix}"])
AS_IF([test x"$inside_openmpi" != "xno" -o "$includedir" = "\${prefix}/include"],
[includedir="$includedir/vampirtrace"])
AS_IF([test x"$inside_openmpi" != "xno" -o "$datarootdir" = "\${prefix}/share"],
[datarootdir="$datarootdir/vampirtrace"])
AS_IF([test x"$inside_openmpi" != "xno" -a "$datadir" != "\${datarootdir}"],
[datadir="$datadir/vampirtrace"])
AS_IF([test "$docdir" = "\${datarootdir}/doc/\${PACKAGE_TARNAME}"],
[docdir="\${datarootdir}/doc"])
# Declare additional variables
AC_ARG_VAR(AR, [archiver command])
AC_ARG_VAR(NM, [command to list symbols from object files])
AC_ARG_VAR(JAVA, [Java application launcher command])
ACVT_CONF_TITLE([Compiler, preprocessor, and programs])
# Check for compiler and preprocessor
AC_PROG_CC
AM_PROG_CC_C_O
AC_PROG_CXX
AC_PROG_CPP
AC_PROG_CXXCPP
AM_PROG_AS
AC_C_BIGENDIAN
AC_C_INLINE
# Do we want to support Fortran
check_fortran="yes"
force_fortran="no"
AC_ARG_ENABLE(fortran,
AC_HELP_STRING([--enable-fortran],
[enable Fortran support, default: enable if Fortran compiler found by configure]),
[
AS_IF([test x"$enableval" = "xyes"],
[
force_fortran="yes"
],
[
check_fortran="no"
FC=
])
])
# Check for Fortran compiler
AS_IF([test x"$check_fortran" = "xyes"],
[
# Exclude F77-only compiler names when searching Fortran compiler
AC_PROG_FC([gfortran f95 fort xlf95 ifort ifc efc pgfortran pgf95 lf95 f90 xlf90 pgf90 epcf90])
AS_IF([test x"$FC" = x],
[
AC_MSG_NOTICE([error: no Fortran compiler found])
AS_IF([test x"$force_fortran" = "xyes"], [exit 1])
])
])
AC_LANG([C])
AS_IF([test x"$FC" != x],
[AC_DEFINE([HAVE_FC], [1], [Define to 1 if VT is configured with Fortran support.])])
AM_CONDITIONAL(AMHAVEFC, test x"$FC" != x)
# Check cross-build related stuff
ACVT_CROSS
AM_CONDITIONAL(AMHAVECROSSPREFIX, test x"$CROSS_PREFIX" != x)
# Do we want to build and install binaries
AC_ARG_ENABLE(binaries,
AC_HELP_STRING([--enable-binaries],
[build and install binaries, default: enabled]),
[enable_binaries="$enableval"], [enable_binaries="yes"])
AM_CONDITIONAL(AMBUILDBINARIES, test x"$enable_binaries" = "xyes")
# Check for programs
#AC_PROG_AR
AC_CHECK_PROGS(AR, ar, ar)
AC_PROG_LN_S
AC_PROG_AWK
AC_CHECK_PROG(JAVA, java, java)
ACVT_CONF_TITLE([Header files, types, and functions])
# Check for header files
AC_HEADER_STDC
AC_CHECK_HEADERS([stdint.h inttypes.h fnmatch.h sys/param.h])
HAVE_STDINT_H=0
HAVE_INTTYPES_H=0
AS_IF([test x"$ac_cv_header_stdint_h"], [HAVE_STDINT_H=1])
AS_IF([test x"$ac_cv_header_inttypes.h"], [HAVE_INTTYPES_H=1])
AC_SUBST(HAVE_STDINT_H)
AC_SUBST(HAVE_INTTYPES_H)
# Check for datatypes
AC_TYPE_SIZE_T
AC_CHECK_SIZEOF(void*, 8)
AC_CHECK_SIZEOF(int, 4)
AC_CHECK_SIZEOF(long, 8)
AC_CHECK_SIZEOF(mode_t, 4)
AC_CHECK_SIZEOF(size_t, 8)
SIZEOF_LONG=$ac_cv_sizeof_long
AC_SUBST(SIZEOF_LONG)
# Check for library functions
#AC_REPLACE_FNMATCH
#AC_FUNC_MALLOC
#AC_FUNC_REALLOC
AC_CHECK_DECL([va_copy],
[AC_DEFINE([HAVE_VA_COPY], [1], [Define to 1 if you have the `va_copy' function.])],
[], [#include <stdarg.h>])
AC_CHECK_DECL([__va_copy],
[AC_DEFINE([HAVE_UNDERSCORE_VA_COPY], [1], [Define to 1 if you have the `__va_copy' function.])],
[], [#include <stdarg.h>])
AC_CHECK_FUNCS([asprintf snprintf vasprintf vsnprintf strdup memmove])
# Check for libtool
ACVT_CONF_TITLE([Libtool])
# Override the configure options '--enable-static' and '--enable-shared' to
# enforce building only static libraries on CrayXT and BlueGene/L platforms.
AS_IF([test "$PLATFORM" = "crayxt" -o "$PLATFORM" = "bgl"],
[enable_static="yes"; enable_shared="no"])
# Save prior set symbol lister command to distinguish whether it is given
# by configure option or determined by AC_PROG_LIBTOOL
given_nm=$NM
AC_PROG_LIBTOOL
# Extract extension for shared libraries from Libtool variables
SHREXT=$shrext_cmds
AC_SUBST(SHREXT)
# If building of shared libraries is desired on BlueGene/P/Q, add '-Wl,-dy'
# to linker flags to lead libtool to believe that dynamic linking is the
# default behaviour of the linker.
AS_IF([test x"$enable_shared" = "xyes"],
[
case $PLATFORM in
bgp | bgq)
export LDFLAGS="$LDFLAGS $lt_prog_compiler_wl-dy"
;;
esac
])
# Check for BSD compatible symbol lister command
#AC_PROG_NM # already been checked by AC_PROG_LIBTOOL
AS_IF([test x"$NM" != x -a x"$given_nm" = x],
[
# Append demangle and file/line number options
case `$NM -V 2>&1` in
GNU\ nm\ *)
NM="$NM --demangle --line-numbers"
;;
esac
])
AC_DEFINE_UNQUOTED([DEFAULT_NM], ["$NM"],
[Command to list symbols from object files.])
# Check for timer
ACVT_CONF_TITLE([Timer])
ACVT_TIMER
# Check for compiler instrumentation
ACVT_CONF_TITLE([Compiler instrumentation])
ACVT_COMPINST
AS_IF([test x"$force_compinst" = "xyes" -a x"$compinst_error" = "xyes"], [exit 1])
AS_IF([test x"$enable_config_titles" = "xyes" -a x"$check_compinst" = "xno"],
[AC_MSG_NOTICE([disabled via command line switch])])
AM_CONDITIONAL(AMHAVECOMPINST, test x"$have_compinst" = "xyes")
AM_CONDITIONAL(AMBUILDCOMPINST_GNU, test x"$compinst_type" = "xgnu" -o x"$compinst_type" = "xpgi9")
AM_CONDITIONAL(AMBUILDCOMPINST_PGI, test x"$compinst_type" = "xpgi")
AM_CONDITIONAL(AMBUILDCOMPINST_CRAYCCE, test x"$compinst_type" = "xcraycce")
AM_CONDITIONAL(AMBUILDCOMPINST_PHAT, test x"$compinst_type" = "xsun")
AM_CONDITIONAL(AMBUILDCOMPINST_XL, test x"$compinst_type" = "xxl")
AM_CONDITIONAL(AMBUILDCOMPINST_FTRACE, test x"$compinst_type" = "xnecsx")
AM_CONDITIONAL(AMBUILDCOMPINST_OPENUH, test x"$compinst_type" = "xopenuh")
# Check for binary instrumentation by Dyninst
ACVT_CONF_TITLE([Binary instrumentation by Dyninst])
ACVT_DYNINST
AS_IF([test x"$force_dyninst" = "xyes" -a x"$dyninst_error" = "xyes"], [exit 1])
AS_IF([test x"$force_dynattlib" = "xyes" -a x"$dynattlib_error" = "xyes"], [exit 1])
AS_IF([test x"$enable_config_titles" = "xyes" -a x"$check_dyninst" = "xno"],
[AC_MSG_NOTICE([disabled via command line switch])])
AM_CONDITIONAL(AMHAVEDYNINST, test x"$have_dyninst" = "xyes")
AM_CONDITIONAL(AMBUILDDYNATTLIB, test x"$build_dynattlib" = "xyes")
# Check for source conde instrumentation by TAU
ACVT_CONF_TITLE([Automatic source code instrumentation by TAU])
ACVT_TAUINST
AS_IF([test x"$force_tauinst" = "xyes" -a x"$tauinst_error" = "xyes"], [exit 1])
AS_IF([test x"$enable_config_titles" = "xyes" -a x"$check_tauinst" = "xno"],
[AC_MSG_NOTICE([disabled via command line switch])])
AM_CONDITIONAL(AMHAVETAUINST, test x"$have_tauinst" = "xyes")
# Check for MPI support
ACVT_CONF_TITLE([Message Passing Interface (MPI)])
ACVT_MPI
AS_IF([test x"$force_mpi" = "xyes" -a x"$mpi_error" = "xyes"], [exit 1])
AS_IF([test x"$enable_config_titles" = "xyes" -a x"$check_mpi" = "xno"],
[AC_MSG_NOTICE([disabled via command line switch])])
AM_CONDITIONAL(AMHAVEMPI, test x"$have_mpi" = "xyes")
AM_CONDITIONAL(AMHAVEMPI2CONST, test x"$have_mpi2_const" = "xyes")
AM_CONDITIONAL(AMHAVEMPI2IO, test x"$have_mpi2_io" = "xyes")
AM_CONDITIONAL(AMHAVEFMPI, test x"$have_fmpi" = "xyes")
AM_CONDITIONAL(AMBUILDMPI, test x"$have_mpi" = "xyes")
AM_CONDITIONAL(AMBUILDFMPIWRAPLIB, test x"$build_fmpiwraplib" = "xyes")
AS_IF([test x"$have_mpi" = "xyes"],
[
# Check for UniMCI support
ACVT_CONF_SUBTITLE([Universal MPI Correctness Interface (UniMCI)])
ACVT_UNIMCI
AS_IF([test x"$force_unimci" = "xyes" -a x"$unimci_error" = "xyes"], [exit 1])
AS_IF([test x"$enable_config_titles" = "xyes" -a x"$check_unimci" = "xno"],
[AC_MSG_NOTICE([disabled via command line switch])])
AM_CONDITIONAL(AMHAVEMPI2CONST, test x"$have_mpi2_const" = "xyes")
AM_CONDITIONAL(AMBUILDFMPIWRAPLIB, test x"$build_fmpiwraplib" = "xyes")
# Check for enhanced time synchronization support
ACVT_CONF_SUBTITLE([Enhanced time synchronization])
ACVT_ETIMESYNC
AS_IF([test x"$force_etimesync" = "xyes" -a x"$etimesync_error" = "xyes"], [exit 1])
AS_IF([test x"$enable_config_titles" = "xyes" -a x"$check_etimesync" = "xno"],
[AC_MSG_NOTICE([disabled via command line switch])])
# Check for MPI trace unification library
ACVT_CONF_SUBTITLE([MPI trace unification library])
ACVT_MPIUNIFYLIB
AS_IF([test x"$force_mpiunifylib" = "xyes" -a x"$mpiunifylib_error" = "xyes"], [exit 1])
AS_IF([test x"$enable_config_titles" = "xyes" -a x"$check_mpiunifylib" = "xno"],
[AC_MSG_NOTICE([disabled via command line switch])])
])
AM_CONDITIONAL(AMBUILDETIMESYNC, test x"$build_etimesync" = "xyes")
AM_CONDITIONAL(AMHAVEMATH, test x"$have_math" = "xyes")
AM_CONDITIONAL(AMHAVEUNIMCI, test x"$have_unimci" = "xyes")
AM_CONDITIONAL(AMBUILDMPIUNIFYLIB, test x"$build_mpiunifylib" = "xyes")
# Check for Threads support
ACVT_CONF_TITLE([Multithreading])
ACVT_THREADS
AS_IF([test x"$force_threads" = "xyes" -a x"$threads_error" = "xyes"], [exit 1])
AS_IF([test x"$enable_config_titles" = "xyes" -a x"$check_threads" = "xno"],
[AC_MSG_NOTICE([disabled via command line switch])])
AM_CONDITIONAL(AMHAVETHREADS, test x"$have_threads" = "xyes")
AM_CONDITIONAL(AMHAVEPTHREAD, test x"$have_pthread" = "xyes")
AM_CONDITIONAL(AMHAVEOMP, test x"$have_omp" = "xyes")
AM_CONDITIONAL(AMBUILDMT, test x"$have_threads" = "xyes")
AM_CONDITIONAL(AMBUILDOPARI, test x"$build_opari" = "xyes")
AM_CONDITIONAL(AMTHRDPTHREAD, test x"$have_pthread" = "xyes")
AM_CONDITIONAL(AMTHRDOMP, test x"$have_pthread" != "xyes" -a x"$have_omp" = "xyes")
# Check for Hybrid (MPI/Threads) support
AS_IF([test x"$have_mpi" = "xyes" -a x"$have_threads" = "xyes"],
[
build_hybrid="yes"
AC_DEFINE([HAVE_HYBRID], [1], [Define to 1 if VT is configured with Hybrid (MPI/Threads) support.])
])
AM_CONDITIONAL(AMBUILDHYBRID, test x"$build_hybrid" = "xyes")
# Check for JAVA support
ACVT_CONF_TITLE([Java])
ACVT_JAVA
AS_IF([test x"$force_java" = "xyes" -a x"$java_error" = "xyes"], [exit 1])
AS_IF([test x"$enable_config_titles" = "xyes" -a x"$check_java" = "xno"],
[AC_MSG_NOTICE([disabled via command line switch])])
AM_CONDITIONAL(AMBUILDJAVA, test x"$have_java" = "xyes")
AM_CONDITIONAL(AMBUILDVTJAVA, test x"$have_java" = "xyes" -a x"$JAVA" != x)
# Check for hardware performace counter support
ACVT_CONF_TITLE([Hardware performance counter])
ACVT_METRICS
AS_IF([test x"$force_metrics" = "xyes" -a x"$metrics_error" = "xyes"], [exit 1])
AS_IF([test x"$enable_config_titles" = "xyes" -a x"$check_metrics" = "xno"],
[AC_MSG_NOTICE([disabled via command line switch])])
AM_CONDITIONAL(AMHAVEMETRICS, test x"$have_metrics" = "xyes")
AM_CONDITIONAL(AMHAVEPAPI, test x"$have_papi" = "xyes")
AM_CONDITIONAL(AMHAVECPC, test x"$have_cpc" = "xyes")
AM_CONDITIONAL(AMHAVENECSXCNTR, test x"$have_necsxcntr" = "xyes")
# Check for resource usage tracing support
ACVT_CONF_TITLE([Resource usage tracing])
ACVT_RUSAGE
AS_IF([test x"$enable_config_titles" = "xyes" -a x"$check_rusage" = "xno"],
[AC_MSG_NOTICE([disabled via command line switch])])
AS_IF([test x"$force_rusage" = "xyes" -a x"$rusage_error" = "xyes"], [exit 1])
AM_CONDITIONAL(AMHAVERUSAGE, test x"$have_rusage" = "xyes")
# Check for plugin counter support
ACVT_CONF_TITLE([Plugin Counter support])
ACVT_PLUGINCNTR
AS_IF([test x"$enable_config_titles" = "xyes" -a x"$check_plugin_cntr" = "xno"],
[AC_MSG_NOTICE([disabled via command line switch])])
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 CPU ID tracing support
ACVT_CONF_TITLE([GLIBC's CPU ID tracing])
ACVT_GETCPU
AS_IF([test x"$enable_config_titles" = "xyes" -a x"$check_getcpu" = "xno"],
[AC_MSG_NOTICE([disabled via command line switch])])
AS_IF([test x"$force_getcpu" = "xyes" -a x"$getcpu_error" = "xyes"], [exit 1])
AM_CONDITIONAL(AMHAVEGETCPU, test x"$have_getcpu" = "xyes")
# Check for NVIDIA CUDA support
ACVT_CONF_TITLE([NVIDIA CUDA])
# Check for symbol demangling support by libiberty
ACVT_CONF_SUBTITLE([Symbol demangling])
ACVT_LIBERTY
AS_IF([test x"$enable_config_titles" = "xyes" -a x"$check_liberty" = "xno"],
[AC_MSG_NOTICE([disabled by default])])
AS_IF([test x"$force_liberty" = "xyes" -a x"$liberty_error" = "xyes"], [exit 1])
AM_CONDITIONAL(AMHAVELIBERTY, test x"$have_liberty" = "xyes")
# Check for CUDA Toolkit
ACVT_CONF_SUBTITLE([CUDA Toolkit])
ACVT_CUDA
AS_IF([test x"$enable_config_titles" = "xyes" -a x"$check_cuda" = "xno"],
[AC_MSG_NOTICE([disabled via command line switch])])
AS_IF([test x"$force_cuda" = "xyes" -a x"$cuda_error" = "xyes"], [exit 1])
AM_CONDITIONAL(AMBUILDCUDA, test x"$have_cuda" = "xyes")
AM_CONDITIONAL(AMBUILDCUDART, test x"$have_cudart" = "xyes")
# Check for CUDA Tools SDK support
ACVT_CONF_SUBTITLE([CUDA Tools])
# Check for CUPTI
ACVT_CUPTI
AM_CONDITIONAL(AMBUILDCUPTI, test x"$have_cupti" = "xyes")
AM_CONDITIONAL(AMHAVECUPTIEVENTS, test x"$have_cupti_events" = "xyes")
AM_CONDITIONAL(AMHAVECUPTICALLBACKS, test x"$have_cupti_callbacks" = "xyes")
AM_CONDITIONAL(AMHAVECUPTIACTIVITY, test x"$have_cupti_activity" = "xyes")
# Check for library tracing support
ACVT_CONF_TITLE([Library tracing])
ACVT_LIBWRAP
AS_IF([test x"$force_libwrap" = "xyes" -a x"$libwrap_error" = "xyes"], [exit 1])
AS_IF([test x"$enable_config_titles" = "xyes" -a x"$check_libwrap" = "xno"],
[AC_MSG_NOTICE([disabled via command line switch])])
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(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
if test x"$have_cudartwrap" = "xyes" -o x"$have_cupti_callbacks" = "xyes"; then
cond_cuda=1
fi
AM_CONDITIONAL(AMBUILDVTNVCC, test $cond_cuda -eq 1 -a x"$NVCC" != x)
# Check for GPU support
AM_CONDITIONAL(AMHAVEGPU, test x"$have_cupti_callbacks" = "xyes" -o x"$have_cudartwrap" = "xyes")
# Check path for node-local temporary directory
ACVT_LTMPDIR
# Setup compiler wrappers
ACVT_COMPWRAP
# Check for OTF
ACVT_CONF_TITLE([Open Trace Format (OTF)])
ACVT_OTF
AS_IF([test x"$use_extern_otf" = "xyes" -a x"$otf_error" = "xyes"], [exit 1])
AM_CONDITIONAL(AMEXTERNOTF, test x"$use_extern_otf" = "xyes")
AM_CONDITIONAL(AMHAVEIOFSL, test x"$have_iofsl" = "xyes")
AM_CONDITIONAL(AMBUILDIOFSLSCRIPTS, test x"$have_iofsl" = "xyes" -a x"$IOFSLSCRIPTS" != x)
# Check for capabilities of vtsetup
ACVT_CONF_TITLE([VTSetup])
ACVT_SETUP
AS_IF([test x"$force_vtsetup" = "xyes" -a x"$vtsetup_error" = "xyes"], [exit 1])
AS_IF([test x"$enable_config_titles" = "xyes" -a x"$check_vtsetup" = "xno"],
[AC_MSG_NOTICE([disabled via command line switch])])
AM_CONDITIONAL(AMBUILDVTSETUP, test x"$build_vtsetup" = "xyes")
# Check for capabilities of vtrun
ACVT_CONF_TITLE([VTRun])
ACVT_RUN
AS_IF([test x"$force_vtrun" = "xyes" -a x"$vtrun_error" = "xyes"], [exit 1])
AS_IF([test x"$enable_config_titles" = "xyes" -a x"$check_vtrun" = "xno"],
[AC_MSG_NOTICE([disabled via command line switch])])
AM_CONDITIONAL(AMBUILDVTRUN, test x"$build_vtrun" = "xyes")
# If it's a VPATH build, add the top-level source directory as an include path
# to find '<srcdir>/config_bottom.h' and '<srcdir>/util/util.h'
AS_IF([test "$top_vt_builddir" != "$top_vt_srcdir"],
[
CPPFLAGS='-I$(top_srcdir)'" $CPPFLAGS"
CPPFLAGS_FOR_BUILD='-I$(top_srcdir)'" $CPPFLAGS_FOR_BUILD"
])
# Output files
AC_CONFIG_FILES([Makefile
extlib/Makefile
util/Makefile
util/installdirs_conf.h
rfg/Makefile
vtlib/Makefile
tools/Makefile
tools/opari/Makefile
tools/opari/tool/Makefile
tools/opari/doc/Makefile
tools/vtcpcavail/Makefile
tools/vtdyn/Makefile
tools/vtdyn/dynattlib/Makefile
tools/vtfilter/Makefile
tools/vtfilter/mpi/Makefile
tools/vtiofsl/Makefile
tools/vtiofsl/vtiofsl-common
tools/vtiofsl/vtiofsl-start
tools/vtiofsl/vtiofsl-stop
tools/vtjava/Makefile
tools/vtjava/vtjava
tools/vtlibwrapgen/Makefile
tools/vtlibwrapgen/vt_libwrapgen_defs.h
tools/vtrun/Makefile
tools/vtrun/vtrun
tools/vtsetup/Makefile
tools/vtsetup/vtsetup
tools/vtsetup/vtsetup-config.xml
tools/vtsetup/vtsetup-data.xml
tools/vtsetup/doc/Makefile
tools/vtunify/Makefile
tools/vtunify/mpi/Makefile
tools/vtwrapper/Makefile
tools/vtwrapper/vtcc-wrapper-data.txt
tools/vtwrapper/vtc++-wrapper-data.txt
tools/vtwrapper/vtfort-wrapper-data.txt
tools/vtwrapper/vtnvcc-wrapper-data.txt
include/Makefile
include/vt_inttypes.h
doc/Makefile
])
# Add MPI wrapper generator scripts to output files
AS_IF([test x"$have_mpi" = "xyes"],
[
AC_CONFIG_FILES([config/mpigen/mk_registry.sh])
AC_CONFIG_FILES([config/mpigen/mk_c_wrapper.sh])
AS_IF([test x"$build_fmpiwraplib" = "xyes"],
[AC_CONFIG_FILES([config/mpigen/mk_fortran_wrapper.sh])])
])
# Create output files
ACVT_CONF_TITLE([Final output])
AC_OUTPUT
# Patch Makefiles which define library targets that depend on other libraries
# to prevent the following Libtool warning:
# "libtool: link: warning: `...//*.la' seems to be moved"
#
# Libtool is getting confused by the "//" in the library paths, so remove the
# trailing '/' from the *LIBDIR variables.
# Actually, this should be done in the *.m4 files where the variables are being
# set, but it's less elaborate at this point. ;-)
makefile_to_patch="vtlib/Makefile tools/vtunify/mpi/Makefile"
for makefile in $makefile_to_patch; do
sed -e "s/^\(.*LIBDIR =.*\)\/$/\1/g" $makefile >$makefile.tmp
mv $makefile.tmp $makefile
done
# Patch the compiler wrapper configuration file for vtnvcc in order to pass
# compiler/linker options directly to the compiler/linker using the option
# -Xcompiler/-Xlinker.
wrapper_data_file="tools/vtwrapper/vtnvcc-wrapper-data.txt"
# keywords containing compiler/linker options
# (<compiler options> -- <linker options>)
wrapper_data_keys="compiler_flags compinst_compiler_flags dyninst_compiler_flags -- linker_flags libs vtlib vtmpilib vtmtlib vthyblib vtpomplib vtdynattlib"
value_prefix="-Xcompiler"
for key in $wrapper_data_keys; do
if test $key = "--"; then
value_prefix="-Xlinker"
else
value=`grep "^$key=" $wrapper_data_file | sed "s/^$key=//;s/^ *//;s/ *$//;s/ \{1,\}/ /g;s/ /,/g"`
if test x"$value" != x; then
sed -e "s@^$key=.*@$key=$value_prefix $value@" $wrapper_data_file >$wrapper_data_file.tmp
mv $wrapper_data_file.tmp $wrapper_data_file
fi
fi
done
# Generate MPI wrappers
AS_IF([test x"$have_mpi" = "xyes"],
[
AC_MSG_NOTICE([executing MPI wrapper generator])
$SHELL $top_vt_builddir/config/mpigen/mk_registry.sh
AS_IF([test $? != 0], [exit 1])
$SHELL $top_vt_builddir/config/mpigen/mk_c_wrapper.sh
AS_IF([test $? != 0], [exit 1])
AS_IF([test x"$build_fmpiwraplib" = "xyes"],
[
$SHELL $top_vt_builddir/config/mpigen/mk_fortran_wrapper.sh
AS_IF([test $? != 0], [exit 1])
])
])
# Show configure summary
ACVT_CONF_SUMMARY

Просмотреть файл

@ -1,79 +0,0 @@
# VampirTrace function filter specification
#
# Syntax: <functions> -- <limit> [S:<[min-]max-stack-level>] [R]
# or: <groups> -- <limit> [S:<[min-]max-stack-level>] [R] G
# or: <function-call-path> -- <limit> C
#
# functions, groups Semicolon-separated list of functions/groups.
# (can contain wildcards)
#
# function-call-path Semicolon-separated list of functions in a call path.
# (MUST NOT contain wildcards)
#
# limit call limit
# Stop recording of functions/groups when the specified call
# limit is reached.
# (0 = don't record functions/groups, -1 = record unlimited)
#
# S:<[min-]max-stack-level>
# minimum/maximum call stack level
# Don't record functions/groups called beyond the specified
# stack level boundaries.
# (values must be > 0, only valid if call limit is != 0)
#
# R Attribute for recursive filtering.
# Don't record callees of filtered functions/groups.
#
# G Attribute for filtering function groups.
#
# C Attribute for filtering a call path.
# (impies recursive filtering 'R')
#
# Example:
#
# add;sub;mul;div -- 1000
# MATH -- 500 G
# * -- 3000000 S:5-10
#
# These filter directives cause that the functions "add", "sub", "mul", and
# "div" will be recorded at most 1000 times and all the functions of the group
# "MATH" at most 500 times. The remaining functions (*) will only be recorded
# when they are called between call stack level 5 and 10 but at most 3000000
# times.
#
#
# Call Path Specific Filtering:
#
# The 'C' attribute indicates that the listed functions specify a call path
# - a specific sequence of function calls. Recording of the last function in the
# list will be stopped if the specified call limit is reached.
# The call path must begin with the root function, typically main, and MUST NOT
# contain wildcards.
#
# Example:
#
# main;foo;bar -- 0 C
#
# This filter directive causes that the function "bar" called from "foo" which
# prior was called from "main" will never be recorded. Since call path filtering
# impies recursiveness (see attribute 'R') all callee functions of this call
# path will be excluded from recording as well.
#
#
# Rank Specific Filtering:
#
# Use the '@' clauses to restrict all the following filter directives to the
# given ranks. The rank selection must be given as a list of <from> - <to>
# pairs or single values.
# The optional argument "-- OFF" disables the given ranks completely, regardless
# of following filter rules.
#
# Example:
#
# @ 35 - 42 -- OFF
# @ 4 - 10, 20 - 29, 34
# foo;bar -- 2000
# * -- 0
#
# This example defines two limits for the ranks 4 - 10, 20 - 29, and 34. The
# first line disables the ranks 35 - 42 completely.

Просмотреть файл

@ -1,18 +0,0 @@
# VampirTrace function group specification
#
# Group definitions and region assignments:
#
# Syntax: <group>=<functions>
#
# group group name
# regions semicolon-seperated list of functions
# (can contain wildcards)
#
# Example:
#
# MATH=add;sub;mul;div
# USER=app_*
#
# These group assignments associate the functions "add", "sub", "mul" and "div"
# with group "MATH" and all functions with the prefix "app_" are associated with
# group "USER".

Просмотреть файл

@ -1,324 +0,0 @@
# VampirTrace metrics specification
#
# measurement definitions complement/extend native (and PAPI preset) definitions
# measured metrics derive from a single measured counter (in principle)
# all measure definitions are considered equivalent
# (though some may be platform-specific)
### generic (PAPI) measurement aliases
### level 1 cache accesses
measure L1_ACCESS = PAPI_L1_TCA
measure L1_I_ACCESS = PAPI_L1_ICA
measure L1_D_ACCESS = PAPI_L1_DCA
### level 1 cache reads
measure L1_READ = PAPI_L1_TCR
measure L1_I_READ = PAPI_L1_ICR # equivalent to PAPI_L1_ICA
measure L1_D_READ = PAPI_L1_DCR
### level 1 cache writes
measure L1_WRITE = PAPI_L1_TCW
measure L1_I_WRITE = PAPI_L1_ICW # never defined
measure L1_D_WRITE = PAPI_L1_DCW
### level 1 cache hits
measure L1_HIT = PAPI_L1_TCH
measure L1_I_HIT = PAPI_L1_ICH
measure L1_D_HIT = PAPI_L1_DCH
### level 1 cache misses
measure L1_MISS = PAPI_L1_TCM
measure L1_I_MISS = PAPI_L1_ICM
measure L1_D_MISS = PAPI_L1_DCM
measure L1_D_READ_MISS = PAPI_L1_LDM
measure L1_D_WRITE_MISS = PAPI_L1_STM
### alternate level 1 cache representation
measure L1_INST = PAPI_L1_ICA
measure L1_INST_HIT = PAPI_L1_ICH
measure L1_INST_MISS = PAPI_L1_ICM
measure L1_LOAD = PAPI_L1_DCR
measure L1_LOAD_HIT = PAPI_L1_LDH # non-standard
measure L1_LOAD_MISS = PAPI_L1_LDM
measure L1_STORE = PAPI_L1_DCW
measure L1_STORE_HIT = PAPI_L1_STH # non-standard
measure L1_STORE_MISS = PAPI_L1_STM
### level 2 cache accesses
measure L2_ACCESS = PAPI_L2_TCA
measure L2_I_ACCESS = PAPI_L2_ICA
measure L2_D_ACCESS = PAPI_L2_DCA
### level 2 cache reads
measure L2_READ = PAPI_L2_TCR
measure L2_I_READ = PAPI_L2_ICR # equivalent to PAPI_L2_ICA
measure L2_D_READ = PAPI_L2_DCR
### level 2 cache writes
measure L2_WRITE = PAPI_L2_TCW
measure L2_I_WRITE = PAPI_L2_ICW # never defined
measure L2_D_WRITE = PAPI_L2_DCW
### level 2 cache hits
measure L2_HIT = PAPI_L2_TCH
measure L2_I_HIT = PAPI_L2_ICH
measure L2_D_HIT = PAPI_L2_DCH
### level 2 cache misses
measure L2_MISS = PAPI_L2_TCM
measure L2_I_MISS = PAPI_L2_ICM
measure L2_D_MISS = PAPI_L2_DCM
measure L2_D_READ_MISS = PAPI_L2_LDM
measure L2_D_WRITE_MISS = PAPI_L2_STM
### alternate level 2 cache representation
measure L2_INST = PAPI_L2_ICA
measure L2_INST_HIT = PAPI_L2_ICH
measure L2_INST_MISS = PAPI_L2_ICM
measure L2_LOAD = PAPI_L2_DCR
measure L2_LOAD_HIT = PAPI_L2_LDH # non-standard
measure L2_LOAD_MISS = PAPI_L2_LDM
measure L2_STORE = PAPI_L2_DCW
measure L2_STORE_HIT = PAPI_L2_STH # non-standard
measure L2_STORE_MISS = PAPI_L2_STM
### level 3 cache accesses
measure L3_ACCESS = PAPI_L3_TCA
measure L3_I_ACCESS = PAPI_L3_ICA
measure L3_D_ACCESS = PAPI_L3_DCA
### level 3 cache reads
measure L3_READ = PAPI_L3_TCR
measure L3_I_READ = PAPI_L3_ICR # equivalent to PAPI_L3_ICA
measure L3_D_READ = PAPI_L3_DCR
### level 3 cache writes
measure L3_WRITE = PAPI_L3_TCW
measure L3_I_WRITE = PAPI_L3_ICW # never defined
measure L3_D_WRITE = PAPI_L3_DCW
### level 3 cache hits
measure L3_HIT = PAPI_L3_TCH
measure L3_I_HIT = PAPI_L3_ICH
measure L3_D_HIT = PAPI_L3_DCH
### level 3 cache misses
measure L3_MISS = PAPI_L3_TCM
measure L3_I_MISS = PAPI_L3_ICM
measure L3_D_MISS = PAPI_L3_DCM
measure L3_D_READ_MISS = PAPI_L3_LDM
measure L3_D_WRITE_MISS = PAPI_L3_STM
### alternate level 3 cache representation
measure L3_INST = PAPI_L3_ICA
measure L3_INST_HIT = PAPI_L3_ICH
measure L3_INST_MISS = PAPI_L3_ICM
measure L3_LOAD = PAPI_L3_DCR
measure L3_LOAD_HIT = PAPI_L3_LDH # non-standard
measure L3_LOAD_MISS = PAPI_L3_LDM
measure L3_STORE = PAPI_L3_DCW
measure L3_STORE_HIT = PAPI_L3_STH # non-standard
measure L3_STORE_MISS = PAPI_L3_STM
### TLB misses
measure TLB_MISS = PAPI_TLB_TL
measure TLB_I_MISS = PAPI_TLB_IM
measure TLB_D_MISS = PAPI_TLB_DM
### instructions
measure INSTRUCTION = PAPI_TOT_INS
measure INTEGER = PAPI_INT_INS
measure FLOATING_POINT = PAPI_FP_INS
measure FP_ADD = PAPI_FAD_INS
measure FP_MUL = PAPI_FML_INS
measure FP_FMA = PAPI_FMA_INS
measure FP_DIV = PAPI_FDV_INS
measure FP_INV = PAPI_FNV_INS
measure FP_SQRT = PAPI_FSQ_INS
measure VECTOR = PAPI_VEC_INS
measure SYNCH = PAPI_SYC_INS
measure LOAD_STORE = PAPI_LST_INS
measure LOAD = PAPI_LD_INS
measure STORE = PAPI_SR_INS
measure COND_STORE = PAPI_CSR_TOT
measure COND_STORE_SUCCESS = PAPI_CSR_SUC
measure COND_STORE_UNSUCCESS = PAPI_CSR_FAL
measure BRANCH = PAPI_BR_INS
measure UNCOND_BRANCH = PAPI_BR_UCN
measure COND_BRANCH = PAPI_BR_CN
measure COND_BRANCH_TAKEN = PAPI_BR_TKN
measure COND_BRANCH_NOTTAKEN = PAPI_BR_NTK
measure COND_BRANCH_PRED = PAPI_BR_PRC
measure COND_BRANCH_MISPRED = PAPI_BR_MSP
### cycles
measure CYCLES = PAPI_TOT_CYC
### idle units
measure INTEGER_UNIT_IDLE = PAPI_FXU_IDL
measure FLOAT_UNIT_IDLE = PAPI_FPU_IDL
measure BRANCH_UNIT_IDLE = PAPI_BRU_IDL
measure LOADSTORE_UNIT_IDLE = PAPI_LSU_IDL
### stalls
measure STALL_MEMORY_ACCESS = PAPI_MEM_SCY
measure STALL_MEMORY_READ = PAPI_MEM_RCY
measure STALL_MEMORY_WRITE = PAPI_MEM_WCY
measure STALL_INST_ISSUE = PAPI_STL_ICY
# platform-specific measurement aliases
# (complement or redefine generic measurement aliases)
# may need to key to particular platform if ambiguity
### POWER4-specific metrics
measure FP_LOAD = PM_LSU_LDF
measure FP_STORE = PM_FPU_STF
measure FP_MISC = PM_FPU_FMOV_FEST
### UltraSPARC-III/IV-specific metrics
measure STALL_L1_MISS = Re_DC_miss # /1
measure STALL_L2_MISS = Re_EC_miss # /1
measure STALL_IC_MISS = Dispatch0_IC_miss # /0
measure STALL_STOREQ = Rstall_storeQ # /0
measure STALL_IU_USE = Rstall_IU_use # /0
measure STALL_FP_USE = Rstall_FP_use # /1
measure STALL_PC_MISS = Re_PC_miss # /1
measure STALL_RAW_MISS = Re_RAW_miss # /1
measure STALL_FPU_BYPASS = Re_FPU_bypass # /1
measure STALL_MISPRED = Dispatch0_mispred # /1
measure STALL_BR_TARGET = Dispatch0_br_target # /0
measure STALL_2ND_BR = Dispatch0_2nd_br # /0
measure STALL_L1_MSOVHD = Re_DC_missovhd # /1
### groupings of metrics for collective measurement
### Opteron groupings (max 4 in group, unrestricted)
aggroup OPTERON_DC1 = DC_ACCESS DC_MISS DC_L2_REFILL_I DC_SYS_REFILL_I
aggroup OPTERON_DC2 = DC_L2_REFILL_M DC_L2_REFILL_O DC_L2_REFILL_E DC_L2_REFILL_S
aggroup OPTERON_DC3 = DC_SYS_REFILL_M DC_SYS_REFILL_O DC_SYS_REFILL_E DC_SYS_REFILL_S
aggroup OPTERON_IC = IC_FETCH IC_MISS IC_L2_REFILL IC_SYS_REFILL
aggroup OPTERON_TLB = DC_L1_DTLB_MISS_AND_L2_DTLB_MISS DC_L1_DTLB_MISS_AND_L2_DTLB_HIT IC_L1ITLB_MISS_AND_L2ITLB_MISS IC_L1ITLB_MISS_AND_L2ITLB_HIT
aggroup OPTERON_BR = FR_BR FR_BR_MIS FR_BR_TAKEN FR_BR_TAKEN_MIS
aggroup OPTERON_FP = FP_ADD_PIPE FP_MULT_PIPE FP_ST_PIPE FP_FAST_FLAG
aggroup OPTERON_FPU = FR_FPU_X87 FR_FPU_MMX_3D FR_FPU_SSE_SSE2_PACKED FR_FPU_SSE_SSE2_SCALAR
aggroup OPTERON_ST1 = IC_FETCH_STALL FR_DECODER_EMPTY FR_DISPATCH_STALLS FR_DISPATCH_STALLS_FULL_FPU
aggroup OPTERON_ST2 = FR_DISPATCH_STALLS_FULL_LS FR_DISPATCH_STALLS_FULL_REORDER FR_DISPATCH_STALLS_FULL_RESERVATION FR_DISPATCH_STALLS_BR
aggroup OPTERON_ST3 = FR_DISPATCH_STALLS_FAR FR_DISPATCH_STALLS_SER FR_DISPATCH_STALLS_SEG FR_DISPATCH_STALLS_QUIET
aggroup OPTERON_ETC = FR_X86_INS CPU_CLK_UNHALTED FR_HW_INTS FP_NONE_RET
aggroup OPTERON_HTM = HT_LL_MEM_XFR HT_LR_MEM_XFR HT_RL_MEM_XFR
aggroup OPTERON_HTI = HT_LL_IO_XFR HT_LR_IO_XFR HT_RL_IO_XFR
### POWER4-specific groupings (max 8 in group, restricted)
aggroup POWER4_DC = PM_DATA_FROM_L2 PM_DATA_FROM_L25_SHR PM_DATA_FROM_L25_MOD PM_DATA_FROM_L275_SHR PM_DATA_FROM_L275_MOD PM_DATA_FROM_L3 PM_DATA_FROM_L35 PM_DATA_FROM_MEM # 5
aggroup POWER4_IC = PM_INST_FROM_PREF PM_INST_FROM_L1 PM_INST_FROM_L2 PM_INST_FROM_L25_L275 PM_INST_FROM_L3 PM_INST_FROM_L35 PM_INST_FROM_MEM # 6
aggroup POWER4_L1 = PM_LD_REF_L1 PM_LD_MISS_L1 PM_ST_REF_L1 PM_ST_MISS_L1 # 56
aggroup POWER4_TLB = PM_ITLB_MISS PM_DTLB_MISS
aggroup POWER4_LX = PM_ITLB_MISS PM_DTLB_MISS PM_LD_REF_L1 PM_LD_MISS_L1 PM_ST_REF_L1 PM_ST_MISS_L1 # 56
aggroup POWER4_BR = PM_BR_ISSUED PM_BR_MPRED_CR PM_BR_MPRED_TA # 3,55,61
aggroup POWER4_BRT = PM_BR_ISSUED PM_BR_MPRED_CR PM_BR_MPRED_TA PM_BIQ_IDU_FULL_CYC PM_BRQ_FULL_CYC PM_L1_WRITE_CYC PM_INST_CMPL PM_CYC # 55
aggroup POWER4_LSF = PM_FPU_STF PM_LSU_LDF # 15,54,60
aggroup POWER4_STL = PM_CYC PM_FPU_FULL_CYC PM_FPU_STALL3 # 54
aggroup POWER4_LST = PM_INST_CMPL PM_FPU_STF PM_LSU_LDF PM_CYC PM_FPU_FULL_CYC PM_FPU_STALL3 # 54
aggroup POWER4_FP = PM_FPU_FIN PM_FPU_FMA PM_FPU_FDIV PM_FPU_FSQRT PM_FPU_FMOV_FEST # 53
aggroup POWER4_IFP = PM_FPU_FIN PM_FPU_FMA PM_FPU_FDIV PM_FPU_FSQRT PM_FPU_FMOV_FEST PM_FXU_FIN # 53
aggroup POWER4_II = PM_INST_DISP PM_INST_CMPL # 1,2,18,20
### MIPS-R1200 groupings (max 32 in group, unrestricted)
aggroup R12000_ALL = TLB_misses primary_data_cache_misses secondary_data_cache_misses primary_instruction_cache_misses secondary_instruction_cache_misses graduated_instructions mispredicted_branches graduated_loads graduated_stores graduated_floating-point_instructions decoded_instructions cycles prefetch_primary_data_cache_misses
aggroup R12000_ALL_PAPI = PAPI_L1_DCM PAPI_L1_ICM PAPI_L2_DCM PAPI_L2_ICM PAPI_TLB_TL PAPI_TOT_INS PAPI_FP_INS PAPI_LD_INS PAPI_SR_INS PAPI_TOT_IIS PAPI_BR_CN PAPI_BR_MSP PAPI_CSR_TOT PAPI_CSR_FAL PAPI_TOT_CYC PAPI_PRF_DM PAPI_CA_INV PAPI_CA_ITV
### UltraSPARC-III/IV groupings (max 2 in group, restricted)
aggroup US3_CPI = Cycle_cnt Instr_cnt # duplicates
# cycles/stalls groups
aggroup US3_SMP = Dispatch_rs_mispred Dispatch0_mispred # stall misprediction
aggroup US3_SUS = Rstall_IU_use Rstall_FP_use # stall IU/FP use
aggroup US3_SST = Rstall_storeQ Re_RAW_miss # stall store
aggroup US3_SCD = Cycle_cnt Re_DC_miss
aggroup US3_SCO = Dispatch0_br_target Re_DC_missovhd
aggroup US3_SCE = Dispatch0_2nd_br Re_EC_miss
aggroup US3_SCP = Dispatch0_IC_miss Re_PC_miss
aggroup US3_SCX = SI_ciq_flow Re_FPU_bypass # Re_FPU_bypass always zero?
# instruction and TLB groups
aggroup US3_FPU = FA_pipe_completion FM_pipe_completion
aggroup US3_BMS = IU_Stat_Br_miss_taken IU_Stat_Br_miss_untaken
aggroup US3_BCS = IU_Stat_Br_count_taken IU_Stat_Br_count_untaken
aggroup US3_ITL = Instr_cnt ITLB_miss
aggroup US3_DTL = Cycle_cnt DTLB_miss
# memory and cache groups
aggroup US3_ICH = IC_ref IC_miss
aggroup US3_DCR = DC_rd DC_rd_miss
aggroup US3_DCW = DC_wr DC_wr_miss
aggroup US3_ECI = EC_write_hit_RTO EC_ic_miss
aggroup US3_ECM = EC_rd_miss EC_misses
# locality/SSM and other miscellaneous groups
aggroup US3_ECL = EC_miss_local EC_miss_remote # only SF15000/SF25000
aggroup US3_ECX = EC_wb_remote EC_miss_mtag_remote # only SF15000/SF25000
aggroup US3_ECW = EC_ref EC_wb
aggroup US3_ECS = EC_snoop_inv EC_snoop_cb
aggroup US3_PCR = PC_port0_rd PC_port1_rd
aggroup US3_ETC = SI_snoop PC_MS_misses
aggroup US3_WCM = SI_owned WC_miss
# memory controller groups
aggroup US3_SM1 = MC_stalls_0 MC_stalls_1
aggroup US3_SM2 = MC_stalls_2 MC_stalls_3
aggroup US3_MC0 = MC_reads_0 MC_writes_0
aggroup US3_MC1 = MC_reads_1 MC_writes_1
aggroup US3_MC2 = MC_reads_2 MC_writes_2
aggroup US3_MC3 = MC_reads_3 MC_writes_3
### Itanium2 groupings (max 4 in group, partially restricted)
aggroup ITANIUM2_TLB = ITLB_MISSES_FETCH_L1ITLB ITLB_MISSES_FETCH_L2ITLB L2DTLB_MISSES L1DTLB_TRANSFER
aggroup ITANIUM2_BR = BRANCH_EVENT BR_MISPRED_DETAIL_ALL_CORRECT_PRED BR_MISPRED_DETAIL_ALL_WRONG_PATH BR_MISPRED_DETAIL_ALL_WRONG_TARGET
aggroup ITANIUM2_STL = DISP_STALLED BACK_END_BUBBLE_ALL BE_EXE_BUBBLE_ALL BE_EXE_BUBBLE_FRALL
aggroup ITANIUM2_L1D = DATA_REFERENCES_SET1 L1D_READS_SET1 L1D_READ_MISSES_ALL L2_DATA_REFERENCES_L2_ALL
aggroup ITANIUM2_L2D = L2_DATA_REFERENCES_L2_DATA_READS L2_DATA_REFERENCES_L2_DATA_WRITES L3_READS_DATA_READ_ALL L3_WRITES_DATA_WRITE_ALL
aggroup ITANIUM2_L3D = L3_READS_DATA_READ_HIT L3_READS_DATA_READ_MISS L3_WRITES_DATA_WRITE_HIT L3_WRITES_DATA_WRITE_MISS
aggroup ITANIUM2_LXD = L2_MISSES L3_REFERENCES L3_READS_ALL_MISS L3_WRITES_ALL_MISS
aggroup ITANIUM2_LXX = L3_MISSES L3_WRITES_L2_WB_HIT L3_WRITES_L2_WB_MISS
aggroup ITANIUM2_ICD = L1I_READS L2_INST_DEMAND_READS L3_READS_DINST_FETCH_HIT L3_READS_DINST_FETCH_MISS # instruction cache (demand-load only)
aggroup ITANIUM2_ICP = L1I_PREFETCHES L2_INST_PREFETCHES L3_READS_INST_FETCH_HIT L3_READS_INST_FETCH_MISS # instruction cache (incl. prefetch)
aggroup ITANIUM2_IN1 = INST_DISPERSED IA32_INST_RETIRED IA64_INST_RETIRED LOADS_RETIRED
aggroup ITANIUM2_IN2 = FP_OPS_RETIRED LOADS_RETIRED CPU_CYCLES ISA_TRANSITIONS
aggroup ITANIUM2_ISA = IA32_INST_RETIRED IA64_INST_RETIRED IA32_ISA_TRANSITIONS STORES_RETIRED
aggroup ITANIUM2_FLP = CPU_CYCLES FP_OPS_RETIRED INST_DISPERSED LOADS_RETIRED
### compositions are derived by combining measurements and create hierarchies
### **** generic hierarchy ****
### cycles (including stalls)
compose CYCLES = BUSY + STALL + IDLE
compose STALL = DISPATCH + UNIT_USE + RECIRCULATE
### instructions
compose INSTRUCTION = BRANCH + INTEGER + FLOATING_POINT + MEMORY
compose BRANCH = BRANCH_PRED + BRANCH_MISP
compose FLOATING_POINT = FP_ADD + FP_MUL + FP_FMA + FP_DIV + FP_INV + FP_SQRT + FP_MISC
compose MEMORY = LOAD + STORE + SYNCH
### data accesses (to cache hierarchy & memory)
compose DATA_ACCESS = DATA_HIT_L1$ + DATA_HIT_L2$ + DATA_HIT_L3$ + DATA_HIT_MEM
compose DATA_HIT_L1$ = DATA_STORE_INTO_L1$ + DATA_LOAD_FROM_L1$
compose DATA_HIT_L2$ = DATA_STORE_INTO_L2$ + DATA_LOAD_FROM_L2$
compose DATA_HIT_L3$ = DATA_STORE_INTO_L3$ + DATA_LOAD_FROM_L3$
compose DATA_HIT_MEM = DATA_STORE_INTO_MEM + DATA_LOAD_FROM_MEM
### instruction accesses (to cache hierarchy & memory)
compose INST_ACCESS = INST_HIT_PREF + INST_HIT_L1$ + INST_HIT_L2$ + INST_HIT_L3$ + INST_HIT_MEM
### TLB accesses (instruction & data)
compose TLB_ACCESS = DATA_TLB_ACCESS + INST_TLB_ACCESS
compose DATA_TLB_ACCESS = DATA_TLB_HIT + DATA_TLB_MISS
compose INST_TLB_ACCESS = INST_TLB_HIT + INST_TLB_MISS

Просмотреть файл

@ -1,18 +0,0 @@
vtdata_DATA = \
FILTER.SPEC \
GROUPS.SPEC \
METRICS.SPEC
vtdoc_DATA = \
$(top_srcdir)/ChangeLog \
$(top_srcdir)/LICENSE \
UserManual.html \
UserManual.pdf
vtdatadir = $(datadir)
vtdocdir = $(docdir)
EXTRA_DIST = \
$(vtdata_DATA) \
$(vtdoc_DATA)

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -1,78 +0,0 @@
include Makefile.config
TARGETS = $(HELLO_TGT1) $(HELLO_TGT2) $(HELLO_TGT3) $(HELLO_TGT4) \
$(PI_TGT1) $(PI_TGT2) $(PI_TGT3) $(PI_TGT4) \
$(RING_TGT1) $(RING_TGT2) $(RING_TGT3) $(RING_TGT4) \
$(MDLBROT_TGT1) $(MDLBROT_TGT2) $(MDLBROT_TGT3) $(MDLBROT_TGT4) $(MDLBROT_TGT5) $(MDLBROT_TGT6)
.PHONY: all
all: $(TARGETS)
### hello-man ###
hello-man: hello.c
$(MPICC) -vt:inst manual $(MPICFLAGS) -DMANUAL $^ -o $@ -DVTRACE $(MPILIB)
### hello-comp ###
hello-comp: hello.c
$(MPICC) $(MPICFLAGS) $^ -o $@ $(MPILIB)
### hello-dyn ###
hello-dyn: hello.c
$(MPICC) -vt:inst dyninst $(MPICFLAGS) $^ -o $@ $(MPILIB)
### hello-tau ###
hello-tau: hello.c
$(MPICC) -vt:inst tauinst $(MPICFLAGS) $^ -o $@ $(MPILIB)
### pi-man ###
pi-man: pi.c
$(MPICC) -vt:inst manual $(MPICFLAGS) -DMANUAL $^ -o $@ -lm -DVTRACE $(MPILIB)
### pi-comp ###
pi-comp: pi.c
$(MPICC) $(MPICFLAGS) $^ -o $@ -lm $(MPILIB)
### pi-dyn ###
pi-dyn: pi.c
$(MPICC) -vt:inst dyninst $(MPICFLAGS) $^ -o $@ -lm $(MPILIB)
### pi-tau ###
pi-tau: pi.c
$(MPICC) -vt:inst tauinst $(MPICFLAGS) $^ -o $@ -lm $(MPILIB)
### ring-man ###
ring-man: ring.c
$(MPICC) -vt:inst manual $(MPICFLAGS) -DMANUAL $^ -o $@ -DVTRACE $(MPILIB)
### ring-comp ###
ring-comp: ring.c
$(MPICC) $(MPICFLAGS) $^ -o $@ $(MPILIB)
### ring-dyn ###
ring-dyn: ring.c
$(MPICC) -vt:inst dyninst $(MPICFLAGS) $^ -o $@ $(MPILIB)
ring-tau: ring.c
$(MPICC) -vt:inst tauinst $(MPICFLAGS) $^ -o $@ $(MPILIB)
### mdlbrot-man ###
mdlbrot-man: mdlbrot.c
$(MPICC) -vt:inst manual $(MPICFLAGS) $(SDLINCDIR) -DMANUAL $^ -o $@ -DVTRACE $(MPILIB) $(SDLLIB)
### mdlbrot-comp ###
mdlbrot-comp: mdlbrot.c
$(MPICC) $(MPICFLAGS) $(SDLINCDIR) $^ -o $@ $(MPILIB) $(SDLLIB)
### mdlbrot-dyn ###
mdlbrot-dyn: mdlbrot.c
$(MPICC) -vt:inst dyninst $(MPICFLAGS) $(SDLINCDIR) $^ -o $@ $(MPILIB) $(SDLLIB)
### mdlbrot-tau ###
mdlbrot-tau: mdlbrot.c
$(MPICC) -vt:inst tauinst $(MPICFLAGS) $(SDLINCDIR) $^ -o $@ $(MPILIB) $(SDLLIB)
### libSDLwrap.<a|so> ###
libSDLwrap.a: SDLwrap.c
vtlibwrapgen --build -o libSDLwrap --static $^
libSDLwrap.so: SDLwrap.c
vtlibwrapgen --build -o libSDLwrap --shared $^
SDLwrap.c:
vtlibwrapgen -g SDL -o $@ $(SDLHEADERS)
.PHONY: clean
clean:
-rm -f $(TARGETS) SDLwrap.c *~ *.o
-rm -f *.uctl *.otf *.z

Просмотреть файл

@ -1,42 +0,0 @@
# MPI C Compiler command, Compiler Flags, and MPI Library
MPICC = vtcc -vt:cc mpicc
MPICFLAGS = -g
MPILIB =
# Example targets:
# <prog>-man == manual: functions and loops by using VampirTrace's API
# <prog>-comp == automatic: functions by using compiler
# <prog>-dyn == binary-automatic: functions by using Dyninst
# <prog>-tau == source2source-automatic: functions by using PDT/TAU
# (comment line to disable a target)
# HELLO (Hello World (MPI))
HELLO_TGT1 = hello-man
#HELLO_TGT2 = hello-comp
#HELLO_TGT3 = hello-dyn
#HELLO_TGT4 = hello-tau
# PI (Approximates the value of pi (MPI))
PI_TGT1 = pi-man
#PI_TGT2 = pi-comp
#PI_TGT3 = pi-dyn
#PI_TGT4 = pi-tau
# RING (Send a trivial message around in a ring (MPI))
RING_TGT1 = ring-man
#RING_TGT2 = ring-comp
#RING_TGT3 = ring-dyn
#RING_TGT4 = ring-tau
# MANDELBROT (Calculate Mandelbrot set (MPI))
SDLINCDIR =
SDLLIB = -lSDL
#MDLBROT_TGT1 = mdlbrot-man
#MDLBROT_TGT2 = mdlbrot-comp
#MDLBROT_TGT3 = mdlbrot-dyn
#MDLBROT_TGT4 = mdlbrot-tau
# uncomment following lines, if you want to instrument the SDL API
#SDLHEADERS = /usr/include/SDL/SDL_*.h
#MDLBROT_TGT5 = libSDLwrap.so
#MDLBROT_TGT6 = libSDLwrap.a

Просмотреть файл

@ -1,31 +0,0 @@
#include <stdio.h>
#include <mpi.h>
#ifdef MANUAL
#include "vt_user.h"
#endif
int
main(int argc, char *argv[])
{
int rank, size;
#if (defined(MANUAL))
VT_USER_START("main");
#endif
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
printf("Hello from process %i of %i !\n", rank, size);
MPI_Finalize();
#ifdef MANUAL
VT_USER_END("main");
#endif
return 0;
}

Просмотреть файл

@ -1,208 +0,0 @@
#include <stdio.h>
#include <stdlib.h>
#include <SDL/SDL.h>
#include <mpi.h>
#ifdef MANUAL
#include "vt_user.h"
#endif
#define MAX_X 640
#define MAX_Y 480
static void draw_pixel(SDL_Surface* pic, Uint32 x, Uint32 y, Uint32 color)
{
Uint32* pixel;
#ifdef MANUAL
VT_USER_START("draw_pixel");
#endif
pixel = (Uint32*)pic->pixels + y * MAX_X + x;
*pixel = color;
#ifdef MANUAL
VT_USER_END("draw_pixel");
#endif
}
static void draw(SDL_Surface* pic, Uint32* field)
{
Uint32 i, j;
#ifdef MANUAL
VT_USER_START("draw");
#endif
for(i = 0; i < MAX_X; i++)
{
for(j = 0; j < MAX_Y; j++)
{
draw_pixel(pic, i, j, field[i * MAX_Y + j]);
}
}
#ifdef MANUAL
VT_USER_END("draw");
#endif
}
static Uint32 mandelbrot_point(double cx, double cy, double max_value_sq,
Uint32 max_iter)
{
double value_sq = 0;
double x = 0, xt;
double y = 0, yt;
Uint32 iter = 0;
#ifdef MANUAL
VT_USER_START("mandelbrot_point");
#endif
while((value_sq <= max_value_sq) && (iter < max_iter))
{
xt = (x * x) - (y * y) + cx;
yt = 2 * x * y + cy;
x = xt;
y = yt;
iter++;
value_sq = x * x + y * y;
}
#ifdef MANUAL
VT_USER_END("mandelbrot_point");
#endif
return iter;
}
static void calc_lines(Uint32 start, Uint32 end, Uint32* lines,
double max_values_sq, Uint32 max_iter)
{
Uint32 i, iter_wert, icolor;
double cx, cy;
double pd_x = 3.0 / (double)MAX_X;
double pd_y = 2.0 / (double)MAX_Y;
#ifdef MANUAL
VT_USER_START("calc_lines");
#endif
for(i = start; i < end; i++)
{
cx = -2.0 + (i / MAX_Y) * pd_x;
cy = -1.0 + (i % MAX_Y) * pd_y;
iter_wert = mandelbrot_point(cx, cy, max_values_sq, max_iter);
icolor = (double)iter_wert / (double)max_iter * (1u << 24);
lines[i-start] = icolor;
}
#ifdef MANUAL
VT_USER_END("calc_lines");
#endif
}
int main(int argc, char* argv[])
{
int numprocs, rank, edge, pixel_count, start, end;
double max_values_sq;
Uint32 max_iter;
#ifdef MANUAL
VT_USER_START("main");
#endif
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
if(numprocs <= 1)
{
fprintf(stderr, "%s: error: requires at least two MPI processes",
argv[0]);
#ifdef MANUAL
VT_USER_END("main");
#endif
return 1;
}
max_values_sq = 4.0;
max_iter = 5000;
edge = (MAX_X * MAX_Y) / (numprocs - 1);
if(rank > 0)
{
int i = rank - 1;
Uint32* pixels;
start = i * edge;
end = (i == numprocs - 2) ? MAX_X * MAX_Y : (i + 1) * edge;
pixel_count = end - start;
pixels = malloc(pixel_count * sizeof(Uint32));
calc_lines(start, end, pixels, max_values_sq, max_iter);
MPI_Send((void*)pixels, pixel_count, MPI_INT, 0, 0, MPI_COMM_WORLD);
free(pixels);
}
else /* rank == 0 */
{
int i, recv_count = (edge + 1);
Uint32* field = malloc(MAX_X * MAX_Y * sizeof(Uint32));
Uint32* fieldpos;
SDL_Surface* pic;
SDL_Event event;
MPI_Status status;
for(i = 1; i < numprocs; i++)
{
start = (i - 1) * edge;
end = (i == numprocs - 1) ? MAX_X * MAX_Y : i * edge;
pixel_count = end - start;
recv_count = pixel_count;
fieldpos = field+start;
MPI_Recv(fieldpos, recv_count, MPI_INT, i, MPI_ANY_TAG, MPI_COMM_WORLD, &status);
}
SDL_Init(SDL_INIT_EVERYTHING);
pic = SDL_SetVideoMode(MAX_X, MAX_Y, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
SDL_WM_SetCaption("Mandelbrot", "Mandelbrot");
draw(pic, field);
SDL_Flip(pic);
do
{
SDL_Delay(50);
SDL_PollEvent(&event);
} while( event.type != SDL_QUIT && event.type != SDL_KEYDOWN );
SDL_FreeSurface(pic);
SDL_Quit();
free(field);
}
MPI_Finalize();
#ifdef MANUAL
VT_USER_END("main");
#endif
return 0;
}

Просмотреть файл

@ -1,95 +0,0 @@
#include <stdio.h>
#include <math.h>
#include <mpi.h>
#ifdef MANUAL
#include "vt_user.h"
#endif
/* Constant for how many values we'll estimate */
#define NUM_ITERS 1000
/* Prototype the function that we'll use below. */
static double f(double);
int
main(int argc, char *argv[])
{
int iter, rank, size, i;
double PI25DT = 3.141592653589793238462643;
double mypi, pi, h, sum, x;
double startwtime = 0.0, endwtime;
int namelen;
char processor_name[MPI_MAX_PROCESSOR_NAME];
#ifdef MANUAL
VT_USER_START("main");
#endif
/* Normal MPI startup */
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Get_processor_name(processor_name, &namelen);
printf("Process %d of %d on %s\n", rank, size, processor_name);
/* Do approximations for 1 to 100 points */
for (iter = 2; iter < NUM_ITERS; ++iter) {
h = 1.0 / (double) iter;
sum = 0.0;
/* A slightly better approach starts from large i and works back */
if (rank == 0)
startwtime = MPI_Wtime();
for (i = rank + 1; i <= iter; i += size) {
x = h * ((double) i - 0.5);
sum += f(x);
}
mypi = h * sum;
MPI_Reduce(&mypi, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD);
if (rank == 0) {
printf("%d points: pi is approximately %.16f, error = %.16f\n",
iter, pi, fabs(pi - PI25DT));
endwtime = MPI_Wtime();
printf("wall clock time = %f\n", endwtime - startwtime);
fflush(stdout);
}
}
/* All done */
MPI_Finalize();
#ifdef MANUAL
VT_USER_END("main");
#endif
return 0;
}
static double
f(double a)
{
double e;
#ifdef MANUAL
VT_USER_START("f");
#endif
e = (4.0 / (1.0 + a * a));
#ifdef MANUAL
VT_USER_END("f");
#endif
return e;
}

Просмотреть файл

@ -1,96 +0,0 @@
/*
* Simple ring test program
*/
#include <stdio.h>
#include <mpi.h>
#ifdef MANUAL
#include "vt_user.h"
#endif
#define NRING 100
#define TAG 4711
int main(int argc, char *argv[])
{
int rank, size, next, prev, message;
#ifdef MANUAL
VT_USER_START("main");
#endif
/* Start up MPI */
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
/* Calculate the rank of the next process in the ring. Use the
modulus operator so that the last process "wraps around" to
rank zero. */
next = (rank + 1) % size;
prev = (rank + size - 1) % size;
/* If we are the "master" process (i.e., MPI_COMM_WORLD rank 0),
put the number of times to go around the ring in the
message. */
if (0 == rank) {
message = NRING;
printf("Process 0 sending %d to %d, tag %d (%d processes in ring)\n",
message, next, TAG, size);
MPI_Send(&message, 1, MPI_INT, next, TAG, MPI_COMM_WORLD);
printf("Process 0 sent to %d\n", next);
}
/* Pass the message around the ring. The exit mechanism works as
follows: the message (a positive integer) is passed around the
ring. Each time it passes rank 0, it is decremented. When
each processes receives a message containing a 0 value, it
passes the message on to the next process and then quits. By
passing the 0 message first, every process gets the 0 message
and can quit normally. */
while (1) {
#ifdef MANUAL
VT_USER_START("ring_loop");
#endif
MPI_Recv(&message, 1, MPI_INT, prev, TAG, MPI_COMM_WORLD,
MPI_STATUS_IGNORE);
if (0 == rank) {
--message;
printf("Process 0 decremented value: %d\n", message);
}
MPI_Send(&message, 1, MPI_INT, next, TAG, MPI_COMM_WORLD);
if (0 == message) {
printf("Process %d exiting\n", rank);
break;
}
#ifdef MANUAL
VT_USER_END("ring_loop");
#endif
}
/* The last process does one extra send to process 0, which needs
to be received before the program can exit */
if (0 == rank) {
MPI_Recv(&message, 1, MPI_INT, prev, TAG, MPI_COMM_WORLD,
MPI_STATUS_IGNORE);
}
/* All done */
MPI_Finalize();
#ifdef MANUAL
VT_USER_END("main");
#endif
return 0;
}

Просмотреть файл

@ -1,57 +0,0 @@
include Makefile.config
TARGETS = $(HELLO_TGT1) $(HELLO_TGT2) $(HELLO_TGT3) $(HELLO_TGT4) \
$(PI_TGT1) $(PI_TGT2) $(PI_TGT3) $(PI_TGT4) \
$(RING_TGT1) $(RING_TGT2) $(RING_TGT3) $(RING_TGT4)
.PHONY: all
all: $(TARGETS)
### hello-man ###
hello-man: hello.cc
$(MPICXX) -vt:inst manual $(MPICXXFLAGS) -DMANUAL $^ -o $@ -DVTRACE $(MPILIB)
### hello-comp ###
hello-comp: hello.cc
$(MPICXX) $(MPICXXFLAGS) $^ -o $@ $(MPILIB)
### hello-dyn ###
hello-dyn: hello.cc
$(MPICXX) -vt:inst dyninst $(MPICXXFLAGS) $^ -o $@ $(MPILIB)
### hello-tau ###
hello-tau: hello.cc
$(MPICXX) -vt:inst tauinst $(MPICXXFLAGS) $^ -o $@ $(MPILIB)
### pi-man ###
pi-man: pi.cc
$(MPICXX) -vt:inst manual $(MPICXXFLAGS) -DMANUAL $^ -o $@ -lm $(MPILIB)
### pi-comp ###
pi-comp: pi.cc
$(MPICXX) $(MPICXXFLAGS) $^ -o $@ -lm $(MPILIB)
### pi-dyn ###
pi-dyn: pi.cc
$(MPICXX) -vt:inst dyninst $(MPICXXFLAGS) $^ -o $@ -lm $(MPILIB)
### pi-tau ###
pi-tau: pi.cc
$(MPICXX) -vt:inst tauinst $(MPICXXFLAGS) $^ -o $@ -lm $(MPILIB)
### ring-man ###
ring-man: ring.cc
$(MPICXX) -vt:inst manual $(MPICXXFLAGS) -DMANUAL $^ -o $@ -DVTRACE $(MPILIB)
### ring-comp ###
ring-comp: ring.cc
$(MPICXX) $(MPICXXFLAGS) $^ -o $@ $(MPILIB)
### ring-dyn ###
ring-dyn: ring.cc
$(MPICXX) -vt:inst dyninst $(MPICXXFLAGS) $^ -o $@ $(MPILIB)
### ring-tau ###
ring-tau: ring.cc
$(MPICXX) -vt:inst tauinst $(MPICXXFLAGS) $^ -o $@ $(MPILIB)
.PHONY: clean
clean:
-rm -f $(TARGETS) *~ *.o
-rm -f *.uctl *.otf *.z

Просмотреть файл

@ -1,30 +0,0 @@
# MPI C++ Compiler command, Compiler Flags, and MPI Library
MPICXX = vtcxx -vt:cxx mpicxx
MPICXXFLAGS = -g
MPILIB =
# Example targets:
# <prog>-man == manual: functions and loops by using VampirTrace's API
# <prog>-comp == automatic: functions by using compiler
# <prog>-dyn == binary-automatic: functions by using Dyninst
# <prog>-tau == source2source-automatic: functions by using PDT/TAU
# (comment line to disable a target)
# HELLO (Hello World (MPI))
HELLO_TGT1 = hello-man
#HELLO_TGT2 = hello-comp
#HELLO_TGT3 = hello-dyn
#HELLO_TGT4 = hello-tau
# PI (Approximates the value of pi (MPI))
PI_TGT1 = pi-man
#PI_TGT2 = pi-comp
#PI_TGT3 = pi-dyn
#PI_TGT4 = pi-tau
# RING (Send a trivial message around in a ring (MPI))
RING_TGT1 = ring-man
#RING_TGT2 = ring-comp
#RING_TGT3 = ring-dyn
#RING_TGT4 = ring-tau

Просмотреть файл

@ -1,29 +0,0 @@
#include <mpi.h>
#include <iostream>
#ifdef MANUAL
#include "vt_user.h"
#endif
using namespace std;
int
main(int argc, char *argv[])
{
int rank, size;
#ifdef MANUAL
VT_TRACER("main");
#endif
MPI::Init(argc, argv);
size = MPI::COMM_WORLD.Get_size();
rank = MPI::COMM_WORLD.Get_rank();
cout << "Hello from " << rank << " of " << size << " !" << endl;
MPI::Finalize();
return 0;
}

Просмотреть файл

@ -1,65 +0,0 @@
#include <mpi.h>
#include <iostream>
#include <math.h>
#ifdef MANUAL
#include "vt_user.h"
#endif
#define NUM_ITERS 100000
using namespace std;
static double f(double);
int
main(int argc, char *argv[])
{
int n = NUM_ITERS;
int rank, size, i;
double PI25DT = 3.141592653589793238462643;
double mypi, pi, h, sum, x;
#ifdef MANUAL
VT_TRACER("main");
#endif
MPI::Init(argc, argv);
size = MPI::COMM_WORLD.Get_size();
rank = MPI::COMM_WORLD.Get_rank();
h = 1.0 / (double) n;
sum = 0.0;
for (i = rank + 1; i <= n; i += size) {
x = h * ((double)i - 0.5);
sum += f(x);
}
mypi = h * sum;
// Combine all the partial results
MPI::COMM_WORLD.Reduce(&mypi, &pi, 1, MPI::DOUBLE, MPI::SUM, 0);
if (rank == 0) {
cout << "After " << n << " iterations, pi is approximately "
<< pi << ", Error is " << fabs(pi - PI25DT) << endl;
}
MPI::Finalize();
return 0;
}
static double
f(double a)
{
double e;
#ifdef MANUAL
VT_TRACER("f");
#endif
e = (4.0 / (1.0 + a * a));
return e;
}

Просмотреть файл

@ -1,88 +0,0 @@
//
// Simple ring test program
//
#include <mpi.h>
#include <iostream>
#ifdef MANUAL
#include "vt_user.h"
#endif
#define NRING 100
#define TAG 4711
int main(int argc, char *argv[])
{
int rank, size, next, prev, message;
#ifdef MANUAL
VT_TRACER("main");
#endif
// Start up MPI
MPI::Init();
rank = MPI::COMM_WORLD.Get_rank();
size = MPI::COMM_WORLD.Get_size();
// Calculate the rank of the next process in the ring. Use the
// modulus operator so that the last process "wraps around" to
// rank zero.
next = (rank + 1) % size;
prev = (rank + size - 1) % size;
// If we are the "master" process (i.e., MPI_COMM_WORLD rank 0),
// put the number of times to go around the ring in the message.
if (0 == rank) {
message = NRING;
std::cout << "Process 0 sending " << message << " to " << next
<< ", tag " << TAG << " (" << size << " processes in ring)"
<< std::endl;
MPI::COMM_WORLD.Send(&message, 1, MPI::INT, next, TAG);
std::cout << "Process 0 sent to " << next << std::endl;
}
// Pass the message around the ring. The exit mechanism works as
// follows: the message (a positive integer) is passed around the
// ring. Each time it passes rank 0, it is decremented. When
// each processes receives a message containing a 0 value, it
// passes the message on to the next process and then quits. By
// passing the 0 message first, every process gets the 0 message
// and can quit normally.
while (1) {
#ifdef MANUAL
VT_TRACER("ring_loop");
#endif
MPI::COMM_WORLD.Recv(&message, 1, MPI::INT, prev, TAG);
if (0 == rank) {
--message;
std::cout << "Process 0 decremented value: " << message
<< std::endl;
}
MPI::COMM_WORLD.Send(&message, 1, MPI::INT, next, TAG);
if (0 == message) {
std::cout << "Process " << rank << " exiting" << std::endl;
break;
}
}
// The last process does one extra send to process 0, which needs
// to be received before the program can exit */
if (0 == rank) {
MPI::COMM_WORLD.Recv(&message, 1, MPI::INT, prev, TAG);
}
// All done
MPI::Finalize();
return 0;
}

Просмотреть файл

@ -1,57 +0,0 @@
include Makefile.config
TARGETS = $(HELLO_TGT1) $(HELLO_TGT2) $(HELLO_TGT3) $(HELLO_TGT4) \
$(PI_TGT1) $(PI_TGT2) $(PI_TGT3) $(PI_TGT4) \
$(RING_TGT1) $(RING_TGT2) $(RING_TGT3) $(RING_TGT4)
.PHONY: all
all: $(TARGETS)
### hello-man ###
hello-man: hello.F
$(MPIFC) -vt:inst manual $(MPIFFLAGS) $(FDOPT)MANUAL $^ -o $@ $(FDOPT)VTRACE $(MPILIB)
### hello-comp ###
hello-comp: hello.F
$(MPIFC) $(MPIFFLAGS) $^ -o $@ $(MPILIB)
### hello-dyn ###
hello-dyn: hello.F
$(MPIFC) -vt:inst dyninst $(MPIFFLAGS) $^ -o $@ $(MPILIB)
### hello-tau ###
hello-tau: hello.F
$(MPIFC) -vt:inst tauinst $(MPIFFLAGS) $^ -o $@ $(MPILIB)
### pi-man ###
pi-man: pi.F
$(MPIFC) -vt:inst manual $(MPIFFLAGS) $(FDOPT)MANUAL $^ -o $@ -lm $(FDOPT)VTRACE $(MPILIB)
### pi-comp ###
pi-comp: pi.F
$(MPIFC) $(MPIFFLAGS) $^ -o $@ -lm $(MPILIB)
### pi-dyn ###
pi-dyn: pi.F
$(MPIFC) -vt:inst dyninst $(MPIFFLAGS) $^ -o $@ -lm $(MPILIB)
### pi-tau ###
pi-tau: pi.F
$(MPIFC) -vt:inst tauinst $(MPIFFLAGS) $^ -o $@ -lm $(MPILIB)
### ring-man ###
ring-man: ring.F
$(MPIFC) -vt:inst manual $(MPIFFLAGS) $(FDOPT)MANUAL $^ -o $@ $(FDOPT)VTRACE $(MPILIB)
### ring-comp ###
ring-comp: ring.F
$(MPIFC) $(MPIFFLAGS) $^ -o $@ $(MPILIB)
### ring-dyn ###
ring-dyn: ring.F
$(MPIFC) -vt:inst dyninst $(MPIFFLAGS) $^ -o $@ $(MPILIB)
### ring-tau ###
ring-tau: ring.F
$(MPIFC) -vt:inst tauinst $(MPIFFLAGS) $^ -o $@ $(MPILIB)
.PHONY: clean
clean:
-rm -f $(TARGETS) *~ *.o
-rm -f *.uctl *.otf *.z

Просмотреть файл

@ -1,33 +0,0 @@
# MPI Fortran Compiler command, Compiler Flags, and MPI Library
MPIFC = vtf90 -vt:f90 mpif90
MPIFFLAGS = -g
MPILIB =
FDOPT = -D
#FDOPT = -WF,-D
# Example targets:
# targets and coresponding instrumentation type
# <prog>-man == manual: functions and loops by using VampirTrace's API
# <prog>-comp == automatic: functions by using compiler
# <prog>-dyn == binary-automatic: functions by using Dyninst
# <prog>-tau == source2source-automatic: functions by using PDT/TAU
# (comment line to disable a target)
# HELLO (Hello World)
HELLO_TGT1 = hello-man
#HELLO_TGT2 = hello-comp
#HELLO_TGT3 = hello-dyn
#HELLO_TGT4 = hello-tau
# PI (Approximates the value of pi)
PI_TGT1 = pi-man
#PI_TGT2 = pi-comp
#PI_TGT3 = pi-dyn
#PI_TGT4 = pi-tau
# RING (Send a trivial message around in a ring)
RING_TGT1 = ring-man
#RING_TGT2 = ring-comp
#RING_TGT3 = ring-dyn
#RING_TGT4 = ring-tau

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше