1
1
- configure: fixed warnings from automake 1.12.x

Changes to VT:
	- general:
		- incremented version number to 5.14.2
	- configure:
		- fixed warnings from automake 1.12.x
	- VT libs / MPI wrappers:
		- do initialize VT and enter the dummy main function ("user") if MPI_Initialized is the very first event to be recorded (fixed assertion error)
		- leave the dummy main function on the same thread where it is entered (fixes potential stack underflow)

This commit was SVN r27734.
Этот коммит содержится в:
Matthias Jurenz 2013-01-02 13:42:17 +00:00
родитель 889d46e966
Коммит 1de078c888
34 изменённых файлов: 210 добавлений и 84 удалений

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

@ -1,3 +1,9 @@
5.14.2openmpi
- 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)

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

@ -1 +1 @@
5.14.1openmpi
5.14.2openmpi

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

@ -49,6 +49,7 @@ MPI_Gatherv
MPI_Graph_create
MPI_Ibsend
MPI_Init
MPI_Initialized
MPI_Init_thread
MPI_Intercomm_create
MPI_Intercomm_merge

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

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

@ -67,7 +67,7 @@ BODY { font-family: sans-serif; }
<P>
<P>
<B><BIG CLASS="XHUGE">VampirTrace 5.14.1&nbsp;User Manual</BIG></B>
<B><BIG CLASS="XHUGE">VampirTrace 5.14.2&nbsp;User Manual</BIG></B>
<BR>
<BR>
<BR>

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

@ -578,7 +578,7 @@ endobj
/Filter /FlateDecode
>>
stream
x┌ХPMO├0 ╜чW°Шъ┘ЙєuE ─$И┬e┌б┌BZ!■>i╫J)qьўьчGЁ╖К╞Ч╦M└Р╝CaЖmл>бїТєАШ╟Cq"ОЙ┼]╦p¤ж╩Щл╨;щ!ы ┴одVеY╬P b╦_|ЙПЁXш5U3QW╡Z▄╕C}ШФ{Рдdv░╓╧&Рn┌ў╫о6Йt╫lўж▓1iП,╚fSпzm"Ш]8SЮ>ў▌s▀Ь У■jО=N-ы┘Bу0ё╔┼ lE╧.в └╓b╠|╤█Kf█╔ь▀}SлcУ
x┌ХPMO├0 ╜чW°Шъ┘ЙєuE ─$И┬e┌б┌BZ!■>i╫J)qьўьчGЁ╖К╞Ч╦M└Р╝CaЖmл>бїТєАШ╟Cq"ОЙ┼]╦p¤ж╩Щл╨;щ!ы ┴одVеY╬P b╦_|ЙПЁXш5U3QW╡Z▄╕C}ШФ{Рдdv░╓╧&Рn┌ў╫о6Йt╫lўж▓1iП,h═ж^ї┌D0╗pж<}ю╗3ц╛9&¤╒{ЬZ╓│Е╞aт3ТЛ ┘К■0Ю]DАн┼Ш∙в╖Ч╠╢У┘┐√■TИcФ
endstream
endobj
382 0 obj <<
@ -13991,9 +13991,9 @@ endobj
/OpenAction 381 0 R
>> endobj
1286 0 obj <<
/Author(ZIH, TU Dresden)/Title(VampirTrace 5.14.1 User Manual)/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.10)/Keywords()
/CreationDate (D:20121218142931+01'00')
/ModDate (D:20121218142931+01'00')
/Author(ZIH, TU Dresden)/Title(VampirTrace 5.14.2 User Manual)/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.10)/Keywords()
/CreationDate (D:20130102141909+01'00')
/ModDate (D:20130102141909+01'00')
/Trapped /False
/PTEX.Fullbanner (This is pdfTeX, Version 3.1415926-1.40.10-2.2 (TeX Live 2009/Debian) kpathsea version 5.0.0)
>> endobj
@ -15290,7 +15290,7 @@ trailer
<< /Size 1287
/Root 1285 0 R
/Info 1286 0 R
/ID [<9434523311271C2A345821CF3311A54E> <9434523311271C2A345821CF3311A54E>] >>
/ID [<F88ADFF8DE8AFEFCF8F16170761D358C> <F88ADFF8DE8AFEFCF8F16170761D358C>] >>
startxref
1314893
%%EOF

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

@ -1,4 +1,4 @@
INCLUDES = $(ZLIB_INCLUDE_LINE) $(ZOIDFS_INCLUDE_LINE)
AM_CPPFLAGS = $(ZLIB_INCLUDE_LINE) $(ZOIDFS_INCLUDE_LINE)
include_HEADERS = otf.h \
OTF_CopyHandler.h \

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

@ -1,6 +1,6 @@
EXTRA_DIST = otf.i
INCLUDES = \
AM_CPPFLAGS = \
$(ZLIB_INCLUDE_LINE) \
-I$(top_builddir)/otflib -I$(top_srcdir)/otflib

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

@ -1,4 +1,4 @@
INCLUDES = \
AM_CPPFLAGS = \
-I$(top_builddir)/otflib -I$(top_srcdir)/otflib \
$(VTF3_INCLUDE_LINE)

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

@ -1,4 +1,4 @@
INCLUDES = \
AM_CPPFLAGS = \
-I$(top_builddir)/otflib \
-I$(top_srcdir)/otflib \
-I$(top_srcdir)/otfauxlib

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

@ -1,4 +1,4 @@
INCLUDES = \
AM_CPPFLAGS = \
-I$(top_builddir)/otflib -I$(top_srcdir)/otflib \
$(ZLIB_INCLUDE_LINE)

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

@ -1,4 +1,4 @@
INCLUDES = -I$(top_builddir)/otflib -I$(top_srcdir)/otflib
AM_CPPFLAGS = -I$(top_builddir)/otflib -I$(top_srcdir)/otflib
if AMBUILDBINARIES
bin_PROGRAMS = \

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

@ -1,4 +1,4 @@
INCLUDES = -I$(top_builddir)/otflib -I$(top_srcdir)/otflib
AM_CPPFLAGS = -I$(top_builddir)/otflib -I$(top_srcdir)/otflib
if AMBUILDBINARIES
bin_PROGRAMS = \

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

@ -1,4 +1,4 @@
INCLUDES = -I$(top_builddir)/otflib -I$(top_srcdir)/otflib
AM_CPPFLAGS = -I$(top_builddir)/otflib -I$(top_srcdir)/otflib
if AMBUILDBINARIES
bin_PROGRAMS = \

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

@ -9,7 +9,7 @@ endif
OTFMERGESRCDIR = $(srcdir)
include $(srcdir)/Makefile.common
INCLUDES = $(COMMONINCLUDES)
AM_CPPFLAGS = $(COMMONINCLUDES)
otfmerge_CFLAGS = $(COMMONCFLAGS)
otfmerge_LDADD = $(COMMONLDADD)

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

@ -7,7 +7,7 @@ include $(srcdir)/../Makefile.common
CC = $(MPICC)
INCLUDES = $(COMMONINCLUDES) $(MPI_INCLUDE_LINE)
AM_CPPFLAGS = $(COMMONINCLUDES) $(MPI_INCLUDE_LINE)
otfmerge_mpi_CFLAGS = -DOTFMERGE_MPI $(COMMONCFLAGS) $(MPICFLAGS)
otfmerge_mpi_LDADD = $(COMMONLDADD) $(MPI_LIB_LINE)

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

@ -9,7 +9,7 @@ endif
OTFPROFILESRCDIR = $(srcdir)
include $(srcdir)/Makefile.common
INCLUDES = $(COMMONINCLUDES)
AM_CPPFLAGS = $(COMMONINCLUDES)
otfprofile_CXXFLAGS = $(COMMONCXXFLAGS)
otfprofile_LDADD = $(COMMONLDADD)

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

@ -7,7 +7,7 @@ include $(srcdir)/../Makefile.common
CXX = $(MPICXX)
INCLUDES = $(COMMONINCLUDES) $(MPI_INCLUDE_LINE)
AM_CPPFLAGS = $(COMMONINCLUDES) $(MPI_INCLUDE_LINE)
otfprofile_mpi_CXXFLAGS = -DOTFPROFILE_MPI $(COMMONCXXFLAGS) $(MPICXXFLAGS)
otfprofile_mpi_LDADD = $(COMMONLDADD) $(MPI_LIB_LINE)

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

@ -1,4 +1,4 @@
INCLUDES = -I$(top_builddir)/otflib -I$(top_srcdir)/otflib
AM_CPPFLAGS = -I$(top_builddir)/otflib -I$(top_srcdir)/otflib
if AMBUILDBINARIES
bin_PROGRAMS = \

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

@ -1,4 +1,4 @@
INCLUDES = \
AM_CPPFLAGS = \
-I$(top_builddir)/otflib -I$(top_srcdir)/otflib \
$(VTF3_INCLUDE_LINE)

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

@ -1,4 +1,4 @@
INCLUDES = -I$(top_builddir)/otflib -I$(top_srcdir)/otflib
AM_CPPFLAGS = -I$(top_builddir)/otflib -I$(top_srcdir)/otflib
noinst_LTLIBRARIES = libjenkins_hash.la

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

@ -1,6 +1,6 @@
noinst_LTLIBRARIES = libvt_rfg.la
INCLUDES = -I$(top_srcdir)/include -I$(top_builddir)/include -I$(top_srcdir)/util -I$(top_builddir)/util
AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include -I$(top_srcdir)/util -I$(top_builddir)/util
libvt_rfg_la_CFLAGS = -static -prefer-pic
libvt_rfg_la_LDFLAGS = -static

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

@ -2,7 +2,7 @@ if AMBUILDBINARIES
bin_PROGRAMS = vtcpcavail
endif
INCLUDES = $(CPCINCDIR)
AM_CPPFLAGS = $(CPCINCDIR)
vtcpcavail_SOURCES = \
vt_cpcavail.c

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

@ -6,7 +6,7 @@ if AMBUILDBINARIES
bin_PROGRAMS = vtdyn
endif
INCLUDES = $(DYNIINCDIR) -I$(top_srcdir)/include -I$(top_builddir)/include -I$(top_srcdir)/vtlib -I$(top_srcdir)/rfg
AM_CPPFLAGS = $(DYNIINCDIR) -I$(top_srcdir)/include -I$(top_builddir)/include -I$(top_srcdir)/vtlib -I$(top_srcdir)/rfg
vtdyn_SOURCES = \
vt_dyn.h \

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

@ -1,6 +1,6 @@
lib_LTLIBRARIES = libvt-dynatt.la
INCLUDES = -I$(top_srcdir)/include -I$(top_builddir)/include -I$(top_srcdir)/vtlib
AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include -I$(top_srcdir)/vtlib
libvt_dynatt_la_CFLAGS = -shared
libvt_dynatt_la_LDFLAGS = -shared -avoid-version

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

@ -8,7 +8,7 @@ OTFLIBRARY = $(top_builddir)/extlib/otf/otflib/libotf.la
OTFDEPENDENCIES = $(OTFLIBRARY)
endif
INCLUDES = -I$(VTFILTERSRCDIR) $(OTFINCLUDE) -I$(top_srcdir)/include -I$(top_builddir)/include -I$(top_srcdir)/rfg -I$(top_srcdir)/vtlib
AM_CPPFLAGS = -I$(VTFILTERSRCDIR) $(OTFINCLUDE) -I$(top_srcdir)/include -I$(top_builddir)/include -I$(top_srcdir)/rfg -I$(top_srcdir)/vtlib
OLDSOURCES = \
$(VTFILTERSRCDIR)/old/vt_filterc.h \

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

@ -2,7 +2,7 @@ if AMBUILDBINARIES
bin_PROGRAMS = vtlibwrapgen
endif
INCLUDES = $(CTOOLINCDIR) -I$(top_srcdir)/include -I$(top_builddir)/include -I$(top_srcdir)/util -I$(top_builddir)/util
AM_CPPFLAGS = $(CTOOLINCDIR) -I$(top_srcdir)/include -I$(top_builddir)/include -I$(top_srcdir)/util -I$(top_builddir)/util
CC = $(CC_FOR_BUILD)
CFLAGS = $(CFLAGS_FOR_BUILD)

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

@ -90,7 +90,7 @@ OTFLIBRARY = $(top_builddir)/extlib/otf/otflib/libotf.la
OTFDEPENDENCIES = $(OTFLIBRARY)
endif
INCLUDES = -I$(VTUNIFYSRCDIR) $(OTFINCLUDE) $(HOOKSINCLUDE) $(ETIMESYNCINCLUDE) -I$(top_srcdir)/include -I$(top_builddir)/include -I$(top_srcdir)/vtlib
AM_CPPFLAGS = -I$(VTUNIFYSRCDIR) $(OTFINCLUDE) $(HOOKSINCLUDE) $(ETIMESYNCINCLUDE) -I$(top_srcdir)/include -I$(top_builddir)/include -I$(top_srcdir)/vtlib
COMMONSOURCES = \
$(VTUNIFYSRCDIR)/vt_unify.h \

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

@ -153,7 +153,7 @@ else # AMHAVECROSSPREFIX
CROSSPREFIXCLEANFILES =
endif # AMHAVECROSSPREFIX
INCLUDES = -I$(top_srcdir)/include -I$(top_builddir)/include -I$(top_srcdir)/util -I$(top_builddir)/util
AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include -I$(top_srcdir)/util -I$(top_builddir)/util
CC = $(CC_FOR_BUILD)
CFLAGS = $(CFLAGS_FOR_BUILD)

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

@ -357,6 +357,7 @@ VT_COMMON_SOURCES = \
vt_mpifile.h \
vt_mpireg.h \
vt_mpireq.h \
vt_mpiwrap.h \
vt_ompreg.h \
vt_otf_gen.h \
vt_otf_sum.h \

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

@ -31,6 +31,7 @@
#include "vt_mpicom.h"
#include "vt_mpireg.h"
#include "vt_mpireq.h"
#include "vt_mpiwrap.h"
#include "vt_pform.h"
#include "vt_thrd.h"
#include "vt_trc.h"
@ -52,7 +53,7 @@
# define GET_THREAD_ID(tid) \
VT_CHECK_THREAD; \
(tid) = VT_MY_THREAD; \
if (is_mpi_initialized && !CHECK_THREAD((tid))) \
if (mpi_init_called && !CHECK_THREAD((tid))) \
vt_error_msg("%s called from a non-master thread. " \
"The provided MPI thread support level does not " \
"allow that.", __func__)
@ -79,19 +80,22 @@ static uint8_t env_mpitrace = 1;
are filtered (env. VT_MPI_IGNORE_FILTER)? */
static uint8_t env_mpi_ignore_filter = 0;
/* dummy function 'user' entered */
static uint8_t vt_enter_user_called = 0;
/* dummy main function ("user") entered */
static uint8_t dummy_main_entered = 0;
static MPI_Status* my_status_array = 0;
static VT_MPI_INT my_status_array_size = 0;
/* thread id where the dummy main function was entered */
static uint32_t dummy_main_tid = 0;
static uint8_t is_mpi_initialized = 0;
/* flag: MPI_Init[_thread] called? */
static uint8_t mpi_init_called = 0;
#if defined(HAVE_MPI_FINALIZED) && HAVE_MPI_FINALIZED
static VT_MPI_INT is_mpi_finalized = 0;
/* flag: MPI_Finalize called? */
static uint8_t mpi_finalize_called = 0;
#endif /* HAVE_MPI_FINALIZED */
#if defined(HAVE_MPI2_THREAD) && HAVE_MPI2_THREAD
/* flag: MPI initialized with multithreading? */
static uint8_t is_mpi_multithreaded = 0;
#endif /* HAVE_MPI2_THREAD */
@ -99,7 +103,10 @@ static uint8_t is_mpi_initialized = 0;
static uint8_t is_rma_putre = 1;
#endif /* HAVE_MPI2_1SIDED */
static MPI_Status* vt_get_status_array(VT_MPI_INT size)
static MPI_Status* my_status_array = 0;
static VT_MPI_INT my_status_array_size = 0;
static MPI_Status* get_status_array(VT_MPI_INT size)
{
if (my_status_array_size == 0)
{
@ -120,6 +127,26 @@ static MPI_Status* vt_get_status_array(VT_MPI_INT size)
return my_status_array;
}
void vt_mpiwrap_init()
{
/* MPI tracing enabled? */
env_mpitrace = vt_env_mpitrace();
/* trace MPI communication events although its corresponding functions
are filtered? */
env_mpi_ignore_filter = vt_env_mpi_ignore_filter();
}
void vt_mpiwrap_finalize()
{
/* exit the dummy main function, if necessary */
if (dummy_main_entered)
{
uint64_t time = vt_pform_wtime();
vt_exit_user(dummy_main_tid, &time);
}
}
/*
*-----------------------------------------------------------------------------
*
@ -136,25 +163,27 @@ VT_MPI_INT MPI_Init(VT_MPI_INT* argc, char*** argv)
uint64_t time;
uint32_t tid;
/* first event?
-> initialize VT and enter dummy function 'user' */
/* first event? */
if (!vt_is_alive)
{
/* initialize VT */
vt_open();
/* get calling thread id */
GET_THREAD_ID(tid);
/* enter the dummy main function */
time = vt_pform_wtime();
vt_enter_user(VT_CURRENT_THREAD, &time);
vt_enter_user_called = 1;
vt_enter_user(tid, &time);
dummy_main_entered = 1;
dummy_main_tid = tid;
}
else
{
/* get calling thread id */
GET_THREAD_ID(tid);
}
/* get calling thread id */
GET_THREAD_ID(tid);
/* MPI tracing enabled? */
env_mpitrace = vt_env_mpitrace();
/* trace MPI communication events although its corresponding functions
are filtered? */
env_mpi_ignore_filter = vt_env_mpi_ignore_filter();
if (IS_MPI_TRACE_ON(tid))
{
@ -185,7 +214,7 @@ VT_MPI_INT MPI_Init(VT_MPI_INT* argc, char*** argv)
vt_mpifile_init();
#endif /* HAVE_MPI2_IO */
is_mpi_initialized = 1;
mpi_init_called = 1;
time = vt_pform_wtime();
vt_exit(tid, &time);
@ -199,7 +228,7 @@ VT_MPI_INT MPI_Init(VT_MPI_INT* argc, char*** argv)
/* initialize mpi event handling */
vt_mpi_init(0);
is_mpi_initialized = 1;
mpi_init_called = 1;
}
return result;
@ -216,25 +245,27 @@ VT_MPI_INT MPI_Init_thread(VT_MPI_INT* argc, char*** argv, VT_MPI_INT required,
uint64_t time;
uint32_t tid;
/* first event?
-> initialize VT and enter dummy function 'user' */
/* first event? */
if (!vt_is_alive)
{
/* initialize VT */
vt_open();
/* get calling thread id */
GET_THREAD_ID(tid);
/* enter the dummy main function */
time = vt_pform_wtime();
vt_enter_user(VT_CURRENT_THREAD, &time);
vt_enter_user_called = 1;
vt_enter_user(tid, &time);
dummy_main_entered = 1;
dummy_main_tid = tid;
}
else
{
/* get calling thread id */
GET_THREAD_ID(tid);
}
/* get calling thread id */
GET_THREAD_ID(tid);
/* MPI tracing enabled? */
env_mpitrace = vt_env_mpitrace();
/* trace MPI communication events although its corresponding functions
are filtered? */
env_mpi_ignore_filter = vt_env_mpi_ignore_filter();
if (IS_MPI_TRACE_ON(tid))
{
@ -311,7 +342,7 @@ VT_MPI_INT MPI_Init_thread(VT_MPI_INT* argc, char*** argv, VT_MPI_INT required,
#endif /* HAVE_MPI2_IO */
}
is_mpi_initialized = 1;
mpi_init_called = 1;
time = vt_pform_wtime();
vt_exit(tid, &time);
@ -325,7 +356,7 @@ VT_MPI_INT MPI_Init_thread(VT_MPI_INT* argc, char*** argv, VT_MPI_INT required,
/* initialize mpi event handling */
vt_mpi_init(0);
is_mpi_initialized = 1;
mpi_init_called = 1;
}
return result;
@ -333,6 +364,66 @@ VT_MPI_INT MPI_Init_thread(VT_MPI_INT* argc, char*** argv, VT_MPI_INT required,
#endif /* HAVE_MPI2_THREAD */
/* -- MPI_Initialized -- */
VT_MPI_INT MPI_Initialized(VT_MPI_INT* flag)
{
VT_MPI_INT result;
uint64_t time;
uint32_t tid;
/* first event? */
if (!vt_is_alive)
{
/* initialize VT */
vt_open();
/* get calling thread id */
GET_THREAD_ID(tid);
/* enter the dummy main function */
time = vt_pform_wtime();
vt_enter_user(tid, &time);
dummy_main_entered = 1;
dummy_main_tid = tid;
}
else
{
/* get calling thread id */
GET_THREAD_ID(tid);
}
if (IS_MPI_TRACE_ON(tid))
{
uint8_t was_recorded;
MPI_TRACE_OFF(tid);
time = vt_pform_wtime();
was_recorded = vt_enter(tid, &time, vt_mpi_regid[VT__MPI_INITIALIZED]);
VT_UNIMCI_CHECK_PRE(MPI_Initialized,
(flag, "", 0, 0), was_recorded, &time);
result = PMPI_Initialized(flag);
VT_UNIMCI_CHECK_POST(MPI_Initialized,
(flag, "", 0, 0), was_recorded, &time);
time = vt_pform_wtime();
vt_exit(tid, &time);
MPI_TRACE_ON(tid);
}
else
{
result = PMPI_Initialized(flag);
}
return result;
}
/* -- MPI_Finalize -- */
VT_MPI_INT MPI_Finalize(void)
@ -366,7 +457,7 @@ VT_MPI_INT MPI_Finalize(void)
vt_mpi_finalize();
#if defined(HAVE_MPI_FINALIZED) && HAVE_MPI_FINALIZED
is_mpi_finalized = 1;
mpi_finalize_called = 1;
#endif /* HAVE_MPI_FINALIZED */
result = MPI_SUCCESS;
@ -381,19 +472,12 @@ VT_MPI_INT MPI_Finalize(void)
vt_mpi_finalize();
#if defined(HAVE_MPI_FINALIZED) && HAVE_MPI_FINALIZED
is_mpi_finalized = 1;
mpi_finalize_called = 1;
#endif /* HAVE_MPI_FINALIZED */
result = MPI_SUCCESS;
}
/* exit dummy function 'user', if necessary */
if (vt_enter_user_called)
{
time = vt_pform_wtime();
vt_exit_user(tid, &time);
}
/* close VampirTrace, if necessary */
if (vt_close_on_mpi_finalize)
vt_close();
@ -407,7 +491,7 @@ VT_MPI_INT MPI_Finalize(void)
VT_MPI_INT MPI_Finalized(VT_MPI_INT* flag)
{
*flag = is_mpi_finalized;
*flag = (VT_MPI_INT)mpi_finalize_called;
return MPI_SUCCESS;
}
@ -2414,7 +2498,7 @@ VT_MPI_INT MPI_Waitall(VT_MPI_INT count, MPI_Request* requests,
#endif /* HAVE_MPI2_THREAD */
{
if (array_of_statuses == MPI_STATUSES_IGNORE)
array_of_statuses = vt_get_status_array(count);
array_of_statuses = get_status_array(count);
vt_save_request_array(requests, count);
}
@ -2542,7 +2626,7 @@ VT_MPI_INT MPI_Waitsome(VT_MPI_INT incount, MPI_Request* array_of_requests,
#endif /* HAVE_MPI2_THREAD */
{
if (array_of_statuses == MPI_STATUSES_IGNORE)
array_of_statuses = vt_get_status_array(incount);
array_of_statuses = get_status_array(incount);
vt_save_request_array(array_of_requests, incount);
}
@ -2741,7 +2825,7 @@ VT_MPI_INT MPI_Testall(VT_MPI_INT count, MPI_Request* array_of_requests,
#endif /* HAVE_MPI2_THREAD */
{
if (array_of_statuses == MPI_STATUSES_IGNORE)
array_of_statuses = vt_get_status_array(count);
array_of_statuses = get_status_array(count);
vt_save_request_array(array_of_requests, count);
}
@ -2813,7 +2897,7 @@ VT_MPI_INT MPI_Testsome(VT_MPI_INT incount, MPI_Request* array_of_requests,
#endif /* HAVE_MPI2_THREAD */
{
if (array_of_statuses == MPI_STATUSES_IGNORE)
array_of_statuses = vt_get_status_array(incount);
array_of_statuses = get_status_array(incount);
vt_save_request_array(array_of_requests, incount);
}

27
ompi/contrib/vt/vt/vtlib/vt_mpiwrap.h Обычный файл
Просмотреть файл

@ -0,0 +1,27 @@
/**
* VampirTrace
* http://www.tu-dresden.de/zih/vampirtrace
*
* Copyright (c) 2005-2012, 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
**/
#ifndef _VT_MPIWRAP_H
#define _VT_MPIWRAP_H
#ifdef __cplusplus
# define EXTERN extern "C"
#else
# define EXTERN extern
#endif
/* initialize/finalize the MPI wrappers */
EXTERN void vt_mpiwrap_init(void);
EXTERN void vt_mpiwrap_finalize(void);
#endif /* _VT_MPIWRAP_H */

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

@ -62,6 +62,7 @@
#if (defined(VT_MPI) || defined(VT_HYB))
# include "vt_mpireg.h"
# include "vt_mpiwrap.h"
# include "vt_sync.h"
# include "vt_unimci.h"
# if defined(VT_MPIUNIFYLIB)
@ -1375,6 +1376,9 @@ void vt_open()
# endif /* VT_ETIMESYNC && !TIMER_IS_GLOBAL */
/* initialize the MPI wrappers */
vt_mpiwrap_init();
/* register MPI routines */
vt_mpi_register();
@ -1639,6 +1643,9 @@ void vt_close()
#endif /* VT_HYB */
return;
}
/* finalize the MPI wrappers */
vt_mpiwrap_finalize();
#endif /* VT_MPI || VT_HYB */
vt_close_called = 1;