Remove the actual VampirTrace sources.
Этот коммит содержится в:
родитель
d01c5160df
Коммит
92f976bdf1
75
.gitignore
поставляемый
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
|
||||
|
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
x
Ссылка в новой задаче
Block a user